[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6NVCABC0WGRVHPDWDFK2VAS":3,"skill-same:01M6NVCABC0WGRVHPDWDFK2VAS":76},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":57,"ownerHtmlUrl":58,"ownerBlogUrl":59,"ownerDescription":60,"updatedAt":61,"install":62,"resources":75},"01M6NVCABC0WGRVHPDWDFK2VAS","regulatory-review",null,"Use to assess regulatory applicability for products that may fall under AI regulation (EU AI Act, Article 50 transparency).","haabe\u002Fmycelium","haabe","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2988921?v=4","01M6NTRKFVVHQG4RF09EB5FRB4","Håvard Bartnes","01M6NTRKKSM94X8BRYCYE2D80Y",52,"MIT","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fplugins\u002Fmycelium\u002Fskills\u002Fregulatory-review\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43],"regulatory","regulatory review","review","mycelium","canvas","for","standalone","assess","transparency","article","act","gates","run","plugin","use","install","eu ai act","harness","framework","state","2026-11-10 10:12:30",false,"---\nname: regulatory-review\ndescription: \"Use to assess regulatory applicability for products that may fall under AI regulation (EU AI Act, Article 50 transparency).\"\nmetadata:\n  instruction_budget: \"42\"\n  framework_dependency: \"mycelium\"\n  framework_dependency_note: \"This skill is designed to run within the Mycelium framework (https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: \u002Fplugin install mycelium@haabe-mycelium.\"\n---\n\n# Regulatory Review Skill\n\nAssess whether the product falls under AI regulation and identify compliance requirements.\n\n## Preflight: Read target canvas file(s) before any Write\u002FEdit\n\n**Hard rule.** Before issuing `Write` or `Edit` against any `.claude\u002Fcanvas\u002F*.yml`, use the **Read tool** on that file in this session. Claude Code's Read-before-Write check requires the `Read` tool specifically — `cat`\u002F`head`\u002F`grep` via Bash do NOT satisfy it.\n\n**Edit vs Write — different cost profiles** (verified 2026-05-14):\n- **`Edit`** (exact-string replacement): `Read` with `limit: 1` satisfies the check at ~50 tokens. State-tracking is per-file, not per-byte — subsequent `Edit` calls work anywhere in the file. Use this for partial updates against large canvas files (e.g., `purpose.yml` at 800+ lines).\n- **`Write`** (full replacement): do a **full Read** first. Write obliterates the file; you should see what you're about to replace. The `limit:1` shortcut is *not* appropriate here.\n\n**ID-bearing entries — scan the ID space before assigning** (added 2026-05-15, v0.23.19): When adding a new component, opportunity, solution, or any other ID-bearing entry to a canvas file, run a Bash grep first to confirm the next ID in your prefix sequence is actually free:\n\n```\ngrep -o \"\u003Cprefix>-[0-9][0-9]*\" .claude\u002Fcanvas\u002F\u003Cfile>.yml | sort -u -t- -k2 -n | tail -3\n```\n\nReplace `\u003Cprefix>` with the canvas's ID prefix (`comp` for landscape, `opp` for opportunities, `sol` for solutions, `ht` for human-tasks, etc.). Then pick the next free integer, **matching the zero-padding already used in that file**. The sort is NUMERIC (`-t- -k2 -n`) rather than lexical, and that is not pedantry: a plain `sort -u` orders `ht-1` after `ht-080`, so on a canvas with inconsistent padding it reports the wrong maximum and the next ID collides. Verified on the dogfood repo 2026-08-13, where lexical sort returned `ht-1` as the highest human-task ID against an actual `ht-080`. `grep -o` is also deliberate: it matches IDs wherever they appear, including cross-references and prose, so an ID that was promised somewhere but not yet defined is not handed out twice. `validate_canvas.py` has a per-file duplicate-ID check (it reports `duplicate id '\u003Cid>'`) that catches the failure on CI, but a duplicate can persist in the working tree for days if CI isn't run between edit and discovery; that happened on 2026-05-15, when a duplicate ID was created in `landscape.yml`.\n\nOriginal failure mode: anti-pattern #7 instance #5, 2026-05-09 — agent conflated Bash `head` with the Read tool, lost ~14k tokens to a Write-fail → remedial-full-Read → re-Write loop. The `limit:1` discipline (graduated 2026-05-14, v0.23.18) prevents the second-order cost where the agent *correctly* follows the rule but full-Reads every time. The ID-scan discipline (graduated 2026-05-15, v0.23.19) prevents the related class where the agent reads enough of the file to satisfy the Edit check but not enough to see existing ID assignments — kin to anti-pattern #8 (Stale State Read).\n\nIf this skill writes to multiple canvas files, register each one first (limit:1 for Edit-only paths; full Read for Write paths) AND ID-scan any prefix you intend to assign.\n\nSee `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fagent-operating-contract.md` *Canvas writes — Read before Write* for the canonical rule.\n\n## When to Use\n\n- At an L3's `commit_to_build` and `release` (Regulatory Gate)\n- At an L4's `release` when product_type is `ai_tool`\n- At an L5's `release` for any product with user-facing AI features\n- When guardrails G-S7 or G-S8 are triggered\n\n## Workflow\n\n1. **Determine AI presence**: Does this product contain AI\u002FML components?\n   - If no: document \"No AI components -- Regulatory Gate N\u002FA\" and stop\n   - If yes: proceed to classification\n\n2. **EU AI Act risk classification** (Regulation 2024\u002F1689):\n   - [ ] Check Annex III high-risk categories:\n     - Biometric identification\u002Fcategorization\n     - Critical infrastructure management\n     - Education and vocational training (access, assessment)\n     - Employment (recruitment, screening, evaluation)\n     - Essential services (credit scoring, insurance, social benefits)\n     - Law enforcement\n     - Migration and border control\n     - Justice and democratic processes\n   - [ ] Classify risk level: Minimal \u002F Limited \u002F High \u002F Unacceptable\n\n3. **Article 50 transparency check** (applies from 2 August 2026):\n   - [ ] Does the system interact directly with people? -> Must disclose AI nature\n   - [ ] Does it generate synthetic content? -> Must machine-mark outputs\n   - [ ] Does it generate deepfakes? -> Must disclose artificial generation\n\n4. **Product-type-specific checks**:\n   - **ai_tool**: Full classification required. Check eval results for bias, safety review for harm potential.\n   - **software**: Check if any feature uses AI\u002FML (recommendations, search, classification). If yes, assess that feature.\n   - **content_***: Check if AI generates or curates content shown to users. If yes, transparency disclosure needed.\n   - **service_offering**: Check if AI assists in service delivery decisions. If yes, explainability required.\n\n5. **Document findings**:\n   - Update `.claude\u002Fcanvas\u002Fthreat-model.yml` with regulatory classification\n   - Update `.claude\u002Fcanvas\u002Fprivacy-assessment.yml` if data processing is involved\n   - Log classification decision in `.claude\u002Fharness\u002Fdecision-log.md`\n\n6. **Determine compliance path**:\n   - Minimal risk: No action required beyond documentation\n   - Limited risk: Transparency obligations (Article 50)\n   - High risk: Conformity assessment path must be planned before L4 delivery\n   - Unacceptable risk: Product cannot proceed in current form\n\n## Output Format\n\n```\n## Regulatory Review: [Product Name]\n\nAI Components: [Yes\u002FNo]\nRisk Classification: [Minimal\u002FLimited\u002FHigh\u002FUnacceptable]\n\n### Annex III Assessment\n| Category | Applicable? | Rationale |\n|----------|------------|-----------|\n| Biometric | No | ... |\n| Critical infra | No | ... |\n| ... | ... | ... |\n\n### Transparency Requirements\n- AI disclosure needed: [Yes\u002FNo]\n- Synthetic content marking: [Yes\u002FNo]\n- Deepfake disclosure: [Yes\u002FNo]\n\n### Compliance Path\n[What needs to happen before delivery]\n\n### Decision\nRegulatory Gate: [Pass\u002FFail\u002FN-A]\n\n(If Fail, lead the Decision block with a distinct blocker line so it pops — e.g. `BLOCKED: regulatory gate failed — [reason]` — rather than letting the verdict blend into the prose above. Von Restorff; per `harness\u002Fdesign-principles.md`.)\n```\n\n## Important Disclaimer\n\nMycelium is not a legal compliance tool. This skill raises awareness and prompts assessment of regulatory applicability. For actual compliance decisions, consult qualified legal counsel specializing in AI regulation.\n\n## Theory Citations\n- EU AI Act (Regulation 2024\u002F1689)\n- Article 50 transparency obligations\n- Annex III high-risk categories\n","# Regulatory Review Skill\n\nAssess whether the product falls under AI regulation and identify compliance requirements.\n\n## Preflight: Read target canvas file(s) before any Write\u002FEdit\n\n**Hard rule.** Before issuing `Write` or `Edit` against any `.claude\u002Fcanvas\u002F*.yml`, use the **Read tool** on that file in this session. Claude Code's Read-before-Write check requires the `Read` tool specifically — `cat`\u002F`head`\u002F`grep` via Bash do NOT satisfy it.\n\n**Edit vs Write — different cost profiles** (verified 2026-05-14):\n- **`Edit`** (exact-string replacement): `Read` with `limit: 1` satisfies the check at ~50 tokens. State-tracking is per-file, not per-byte — subsequent `Edit` calls work anywhere in the file. Use this for partial updates against large canvas files (e.g., `purpose.yml` at 800+ lines).\n- **`Write`** (full replacement): do a **full Read** first. Write obliterates the file; you should see what you're about to replace. The `limit:1` shortcut is *not* appropriate here.\n\n**ID-bearing entries — scan the ID space before assigning** (added 2026-05-15, v0.23.19): When adding a new component, opportunity, solution, or any other ID-bearing entry to a canvas file, run a Bash grep first to confirm the next ID in your prefix sequence is actually free:\n\n```\ngrep -o \"\u003Cprefix>-[0-9][0-9]*\" .claude\u002Fcanvas\u002F\u003Cfile>.yml | sort -u -t- -k2 -n | tail -3\n```\n\nReplace `\u003Cprefix>` with the canvas's ID prefix (`comp` for landscape, `opp` for opportunities, `sol` for solutions, `ht` for human-tasks, etc.). Then pick the next free integer, **matching the zero-padding already used in that file**. The sort is NUMERIC (`-t- -k2 -n`) rather than lexical, and that is not pedantry: a plain `sort -u` orders `ht-1` after `ht-080`, so on a canvas with inconsistent padding it reports the wrong maximum and the next ID collides. Verified on the dogfood repo 2026-08-13, where lexical sort returned `ht-1` as the highest human-task ID against an actual `ht-080`. `grep -o` is also deliberate: it matches IDs wherever they appear, including cross-references and prose, so an ID that was promised somewhere but not yet defined is not handed out twice. `validate_canvas.py` has a per-file duplicate-ID check (it reports `duplicate id '\u003Cid>'`) that catches the failure on CI, but a duplicate can persist in the working tree for days if CI isn't run between edit and discovery; that happened on 2026-05-15, when a duplicate ID was created in `landscape.yml`.\n\nOriginal failure mode: anti-pattern #7 instance #5, 2026-05-09 — agent conflated Bash `head` with the Read tool, lost ~14k tokens to a Write-fail → remedial-full-Read → re-Write loop. The `limit:1` discipline (graduated 2026-05-14, v0.23.18) prevents the second-order cost where the agent *correctly* follows the rule but full-Reads every time. The ID-scan discipline (graduated 2026-05-15, v0.23.19) prevents the related class where the agent reads enough of the file to satisfy the Edit check but not enough to see existing ID assignments — kin to anti-pattern #8 (Stale State Read).\n\nIf this skill writes to multiple canvas files, register each one first (limit:1 for Edit-only paths; full Read for Write paths) AND ID-scan any prefix you intend to assign.\n\nSee `${CLAUDE_PLUGIN_ROOT}\u002Fengine\u002Fagent-operating-contract.md` *Canvas writes — Read before Write* for the canonical rule.\n\n## When to Use\n\n- At an L3's `commit_to_build` and `release` (Regulatory Gate)\n- At an L4's `release` when product_type is `ai_tool`\n- At an L5's `release` for any product with user-facing AI features\n- When guardrails G-S7 or G-S8 are triggered\n\n## Workflow\n\n1. **Determine AI presence**: Does this product contain AI\u002FML components?\n   - If no: document \"No AI components -- Regulatory Gate N\u002FA\" and stop\n   - If yes: proceed to classification\n\n2. **EU AI Act risk classification** (Regulation 2024\u002F1689):\n   - [ ] Check Annex III high-risk categories:\n     - Biometric identification\u002Fcategorization\n     - Critical infrastructure management\n     - Education and vocational training (access, assessment)\n     - Employment (recruitment, screening, evaluation)\n     - Essential services (credit scoring, insurance, social benefits)\n     - Law enforcement\n     - Migration and border control\n     - Justice and democratic processes\n   - [ ] Classify risk level: Minimal \u002F Limited \u002F High \u002F Unacceptable\n\n3. **Article 50 transparency check** (applies from 2 August 2026):\n   - [ ] Does the system interact directly with people? -> Must disclose AI nature\n   - [ ] Does it generate synthetic content? -> Must machine-mark outputs\n   - [ ] Does it generate deepfakes? -> Must disclose artificial generation\n\n4. **Product-type-specific checks**:\n   - **ai_tool**: Full classification required. Check eval results for bias, safety review for harm potential.\n   - **software**: Check if any feature uses AI\u002FML (recommendations, search, classification). If yes, assess that feature.\n   - **content_***: Check if AI generates or curates content shown to users. If yes, transparency disclosure needed.\n   - **service_offering**: Check if AI assists in service delivery decisions. If yes, explainability required.\n\n5. **Document findings**:\n   - Update `.claude\u002Fcanvas\u002Fthreat-model.yml` with regulatory classification\n   - Update `.claude\u002Fcanvas\u002Fprivacy-assessment.yml` if data processing is involved\n   - Log classification decision in `.claude\u002Fharness\u002Fdecision-log.md`\n\n6. **Determine compliance path**:\n   - Minimal risk: No action required beyond documentation\n   - Limited risk: Transparency obligations (Article 50)\n   - High risk: Conformity assessment path must be planned before L4 delivery\n   - Unacceptable risk: Product cannot proceed in current form\n\n## Output Format\n\n```\n## Regulatory Review: [Product Name]\n\nAI Components: [Yes\u002FNo]\nRisk Classification: [Minimal\u002FLimited\u002FHigh\u002FUnacceptable]\n\n### Annex III Assessment\n| Category | Applicable? | Rationale |\n|----------|------------|-----------|\n| Biometric | No | ... |\n| Critical infra | No | ... |\n| ... | ... | ... |\n\n### Transparency Requirements\n- AI disclosure needed: [Yes\u002FNo]\n- Synthetic content marking: [Yes\u002FNo]\n- Deepfake disclosure: [Yes\u002FNo]\n\n### Compliance Path\n[What needs to happen before delivery]\n\n### Decision\nRegulatory Gate: [Pass\u002FFail\u002FN-A]\n\n(If Fail, lead the Decision block with a distinct blocker line so it pops — e.g. `BLOCKED: regulatory gate failed — [reason]` — rather than letting the verdict blend into the prose above. Von Restorff; per `harness\u002Fdesign-principles.md`.)\n```\n\n## Important Disclaimer\n\nMycelium is not a legal compliance tool. This skill raises awareness and prompts assessment of regulatory applicability. For actual compliance decisions, consult qualified legal counsel specializing in AI regulation.\n\n## Theory Citations\n- EU AI Act (Regulation 2024\u002F1689)\n- Article 50 transparency obligations\n- Annex III high-risk categories\n",{"name":5,"metadata":49,"description":7},{"instruction_budget":50,"framework_dependency":27,"framework_dependency_note":51},"42","This skill is designed to run within the Mycelium framework (https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: \u002Fplugin install mycelium@haabe-mycelium.","main","d44421b0667bb71ad515ae7576dfc0f47b00504f","plugins\u002Fmycelium\u002Fskills\u002Fregulatory-review",6,"https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fdocs\u002Fget-started.md","https:\u002F\u002Fgithub.com\u002Fhaabe","https:\u002F\u002Feccera.com\u002F","Building platform tooling for AI-assisted product development.","2026-11-07 04:07:58",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add haabe\u002Fmycelium --skill regulatory-review",{"tool":68,"command":69},"bunx","bunx skills add haabe\u002Fmycelium --skill regulatory-review",{"tool":71,"command":72},"pnpm","pnpm dlx skills add haabe\u002Fmycelium --skill regulatory-review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Fplugins\u002Fmycelium\u002Fskills\u002Fregulatory-review\u002FSKILL.md",true,[],[77,89,102,113,119,126],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":84,"publishedAt":44},"01M6NVR17TVR7WM0MJD1TPY0CW","good_skill","Valid frontmatter.","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_8\u002Fvalid\u002Fplugins\u002Fmycelium\u002Fskills\u002Fgood_skill\u002FSKILL.md",[83],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[85,86,87,88],"good skill","good","frontmatter","valid",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":96,"publishedAt":44},"01M6NVQPDAP1S4JQ5XFCT6P4PG","bad_skill","Has description but no name field.","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_8\u002Fmissing_name\u002Fplugins\u002Fmycelium\u002Fskills\u002Fbad_skill\u002FSKILL.md",[95],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[97,98,99,100,101],"bad skill","bad","name","but","no name",{"skillNo":103,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":110,"publishedAt":44},"01M6NVQHEZAMP2JB45CA6Y3G1B","canvas-update","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_5\u002Fmissing_canvas_in_mapping\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcanvas-update\u002FSKILL.md",[107],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计",[28,111,112],"update","canvas update",{"skillNo":114,"name":104,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":115,"categories":116,"keywords":118,"publishedAt":44},"01M6NVQDX6GEEHJ48WEPK0EG1Q","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_5\u002Fall_present\u002Fplugins\u002Fmycelium\u002Fskills\u002Fcanvas-update\u002FSKILL.md",[117],{"categoryNo":108,"categoryName":109,"taxonomyType":21,"taxonomyTypeDesc":22},[28,111,112],{"skillNo":120,"name":121,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":122,"categories":123,"keywords":124,"publishedAt":44},"01M6NVQ5BH3VN7P9Q185Z2TMRN","ice-score","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_45\u002Fmissing_marker\u002Fplugins\u002Fmycelium\u002Fskills\u002Fice-score\u002FSKILL.md",[],[125],"ice score",{"skillNo":127,"name":128,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":129,"categories":130,"keywords":131,"publishedAt":44},"01M6NVPTQY2QMDABA1GJW5H1EG","bvssh-check","https:\u002F\u002Fgithub.com\u002Fhaabe\u002Fmycelium\u002Fblob\u002Fmain\u002Ftests\u002Fbash\u002Ffixtures\u002Fcheck_45\u002Fmissing_marker\u002Fplugins\u002Fmycelium\u002Fskills\u002Fbvssh-check\u002FSKILL.md",[],[132,133],"bvssh check","check"]