@ikon85/agent-workflow-kit 0.34.5 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/.agents/skills/ask-matt/SKILL.md +8 -0
  2. package/.agents/skills/audit-skills/SKILL.md +8 -0
  3. package/.agents/skills/board-to-waves/SKILL.md +8 -0
  4. package/.agents/skills/census-update/SKILL.md +8 -0
  5. package/.agents/skills/code-review/SKILL.md +8 -0
  6. package/.agents/skills/codebase-design/SKILL.md +8 -0
  7. package/.agents/skills/codex-adapter-sync/SKILL.md +8 -0
  8. package/.agents/skills/decision-gate/SKILL.md +8 -0
  9. package/.agents/skills/diagnose/SKILL.md +8 -0
  10. package/.agents/skills/domain-modeling/SKILL.md +8 -0
  11. package/.agents/skills/git-worktree-recover/SKILL.md +8 -0
  12. package/.agents/skills/grill-me/SKILL.md +8 -0
  13. package/.agents/skills/grill-with-docs/SKILL.md +8 -0
  14. package/.agents/skills/implement/SKILL.md +8 -0
  15. package/.agents/skills/improve-codebase-architecture/SKILL.md +8 -0
  16. package/.agents/skills/kit-release/SKILL.md +37 -21
  17. package/.agents/skills/kit-update/SKILL.md +18 -4
  18. package/.agents/skills/local-ci/SKILL.md +8 -0
  19. package/.agents/skills/memory-lifecycle/SKILL.md +8 -0
  20. package/.agents/skills/orchestrate-wave/SKILL.md +2 -2
  21. package/.agents/skills/project-release/SKILL.md +8 -0
  22. package/.agents/skills/prototype/SKILL.md +8 -0
  23. package/.agents/skills/research/SKILL.md +8 -0
  24. package/.agents/skills/resolving-merge-conflicts/SKILL.md +8 -0
  25. package/.agents/skills/retro/SKILL.md +8 -0
  26. package/.agents/skills/scale-check/SKILL.md +8 -0
  27. package/.agents/skills/security-audit/SKILL.md +8 -0
  28. package/.agents/skills/setup-workflow/SKILL.md +30 -0
  29. package/.agents/skills/setup-workflow/orchestrate-wave-seed.md +1 -0
  30. package/.agents/skills/setup-workflow/spec-self-critique-seed.md +1 -0
  31. package/.agents/skills/spec-self-critique/SKILL.md +8 -0
  32. package/.agents/skills/tdd/SKILL.md +8 -0
  33. package/.agents/skills/to-issues/SKILL.md +8 -0
  34. package/.agents/skills/to-prd/SKILL.md +8 -0
  35. package/.agents/skills/to-waves/SKILL.md +8 -0
  36. package/.agents/skills/triage/SKILL.md +8 -0
  37. package/.agents/skills/verify-spike/SKILL.md +8 -0
  38. package/.agents/skills/wayfinder/SKILL.md +8 -0
  39. package/.agents/skills/wrapup/SKILL.md +8 -0
  40. package/.claude/skills/ask-matt/SKILL.md +8 -0
  41. package/.claude/skills/audit-skills/SKILL.md +8 -0
  42. package/.claude/skills/board-to-waves/SKILL.md +8 -0
  43. package/.claude/skills/census-update/SKILL.md +8 -0
  44. package/.claude/skills/code-review/SKILL.md +8 -0
  45. package/.claude/skills/codebase-design/SKILL.md +8 -0
  46. package/.claude/skills/codex-build/SKILL.md +8 -0
  47. package/.claude/skills/codex-review/SKILL.md +8 -0
  48. package/.claude/skills/decision-gate/SKILL.md +8 -0
  49. package/.claude/skills/diagnose/SKILL.md +8 -0
  50. package/.claude/skills/domain-modeling/SKILL.md +8 -0
  51. package/.claude/skills/git-guardrails-claude-code/SKILL.md +8 -0
  52. package/.claude/skills/git-worktree-recover/SKILL.md +8 -0
  53. package/.claude/skills/grill-me/SKILL.md +8 -0
  54. package/.claude/skills/grill-me-codex/SKILL.md +8 -0
  55. package/.claude/skills/grill-with-docs/SKILL.md +8 -0
  56. package/.claude/skills/grill-with-docs-codex/SKILL.md +8 -0
  57. package/.claude/skills/implement/SKILL.md +8 -0
  58. package/.claude/skills/improve-codebase-architecture/SKILL.md +8 -0
  59. package/.claude/skills/kit-release/SKILL.md +37 -21
  60. package/.claude/skills/kit-update/SKILL.md +18 -4
  61. package/.claude/skills/local-ci/SKILL.md +8 -0
  62. package/.claude/skills/memory-lifecycle/SKILL.md +8 -0
  63. package/.claude/skills/orchestrate-wave/SKILL.md +2 -2
  64. package/.claude/skills/project-release/SKILL.md +8 -0
  65. package/.claude/skills/prototype/SKILL.md +8 -0
  66. package/.claude/skills/research/SKILL.md +8 -0
  67. package/.claude/skills/resolving-merge-conflicts/SKILL.md +8 -0
  68. package/.claude/skills/retro/SKILL.md +8 -0
  69. package/.claude/skills/scale-check/SKILL.md +8 -0
  70. package/.claude/skills/security-audit/SKILL.md +8 -0
  71. package/.claude/skills/setup-pre-commit/SKILL.md +8 -0
  72. package/.claude/skills/setup-workflow/SKILL.md +30 -0
  73. package/.claude/skills/setup-workflow/orchestrate-wave-seed.md +1 -0
  74. package/.claude/skills/setup-workflow/spec-self-critique-seed.md +1 -0
  75. package/.claude/skills/spec-self-critique/SKILL.md +8 -0
  76. package/.claude/skills/tdd/SKILL.md +8 -0
  77. package/.claude/skills/to-issues/SKILL.md +8 -0
  78. package/.claude/skills/to-prd/SKILL.md +8 -0
  79. package/.claude/skills/to-waves/SKILL.md +8 -0
  80. package/.claude/skills/triage/SKILL.md +8 -0
  81. package/.claude/skills/verify-spike/SKILL.md +8 -0
  82. package/.claude/skills/wayfinder/SKILL.md +8 -0
  83. package/.claude/skills/wrapup/SKILL.md +8 -0
  84. package/.claude/skills/write-a-skill/SKILL.md +8 -0
  85. package/README.md +123 -4
  86. package/agent-workflow-kit.package.json +127 -87
  87. package/docs/adr/0004-release-intent-is-a-version-tag.md +18 -5
  88. package/docs/agents/skills/local-ci.md +1 -0
  89. package/docs/agents/skills/orchestrate-wave.md +1 -1
  90. package/docs/agents/skills/spec-self-critique.md +1 -1
  91. package/package.json +1 -1
  92. package/scripts/kit-release.test.mjs +10 -4
  93. package/scripts/project-skill-extension.mjs +37 -0
  94. package/scripts/readiness.mjs +2 -1
  95. package/scripts/test_release_authorization_contract.py +101 -0
  96. package/scripts/test_skill_publish_audit.py +9 -1
  97. package/src/cli.mjs +29 -12
  98. package/src/commands/init.mjs +24 -0
  99. package/src/commands/own.mjs +4 -3
  100. package/src/commands/update.mjs +86 -21
  101. package/src/lib/bundle.mjs +5 -0
  102. package/src/lib/manifest.mjs +13 -2
  103. package/src/lib/ownershipClassifier.mjs +54 -0
  104. package/src/lib/projectSkillExtension.mjs +60 -0
  105. package/src/lib/skillRegistry.mjs +167 -0
  106. package/src/lib/updateCandidate.mjs +105 -4
  107. package/src/lib/updateDecisions.mjs +5 -0
  108. package/src/lib/updateReconcile.mjs +64 -8
  109. package/src/lib/verifyUpdateCandidate.mjs +13 -1
  110. package/src/lib/verifyUpdateCandidateProtocol.mjs +2 -0
  111. package/src/lib/verifyUpdateCandidateTransaction.mjs +9 -3
@@ -4,6 +4,14 @@ description: "Ask which skill or flow fits your situation. A router over the ski
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill ask-matt --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # Ask Matt
8
16
 
9
17
  > **Homage + Router.** Adopted from Matt Pocock's `ask-matt` (MIT, github.com/mattpocock/skills @ `7a83a3a`) — the name stays as a nod to upstream, the content is adapted to *this* repo's skill set (the plan→execute→land→learn line plus our gates, cross-model review, and land/learn skills). Provenance: `docs/agents/provenance.md`. Folder↔upstream-name note: `/diagnose` = upstream `diagnosing-bugs`, `/write-a-skill` = upstream `writing-great-skills` (renamed upstream, local names kept).
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Audit the project's own skills for drift from code/doc reality and fix it — the anti-drift learn step. Run at retro, periodically, or when a drift-hint warns a skill's declared source moved since its last touch. Fans out one read-only research subagent per skill, re-verifies each reported drift before editing (the auditor produces false positives), and fixes by content type. Triggers: audit the skills, skill drift, stale skill, skill points at a dead path or renamed symbol."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill audit-skills --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # audit-skills — Skill freshness audit (anti-drift)
8
16
 
9
17
  A reusable recipe for checking the project's own skills against code/doc reality
@@ -4,6 +4,14 @@ disable-model-invocation: false
4
4
  "description": "Use when sweeping/grooming the GitHub backlog board to cluster open issues into thematic waves (Wellen) — \"lass uns das Board durchgehen\", \"was ist offen und passt zusammen\", \"clustern wir den Backlog\", \"welche Wellen stecken da drin\" — or to spot candidate waves before planning. Reads all open issues, groups them by the Gate+Booster+Splitter heuristic, estimates size/risk + grill-needed per candidate, and after the user confirms creates cluster/Wave-less candidate STUB issues with a To-Do checklist. STOPS at stubs: no PRD, no slicing, no sub-issue links, no promotion (downstream: to-prd matures the stub, to-issues slices + promotes). NOT for maturing/slicing ONE already-chosen candidate (to-prd/to-issues), NOT for per-issue triage labelling (triage), NOT for code comprehension — this is board-WIDE thematic affinity grouping, not per-issue and not code-reading."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill board-to-waves --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # board-to-waves
8
16
 
9
17
  **Survey the board → cluster open issues by theme → anchor stub issues.** Systematizes how Welle F came about: first look at what's open and what fits together, then form thematic waves. Result lands durably as an anchor issue on the board (GitHub = SSOT), not as a chat list.
@@ -3,6 +3,14 @@ name: census-update
3
3
  description: "Build, refresh, or check an optional project-local census. Use when a user invokes census-update, asks to establish a counted surface census, or needs to reconcile census drift; scan facts in the current repository, guide only ambiguous decisions, and activate a verified candidate transactionally."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill census-update --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Census Update
7
15
 
8
16
  Build and maintain the current repository's consumer-owned census through the
@@ -3,6 +3,14 @@ name: code-review
3
3
  description: Review a diff, branch, or PR against two separate axes — Standards (this repo's own conventions plus a Fowler-smell baseline) and Spec (does the diff faithfully implement the originating issue/PRD) — reported side by side, never merged or re-ranked. Runs a three-dot merge-base preflight before either axis starts. Use when asked to review a diff/branch/PR, or when a review needs to answer both "does this follow our standards" and "does this match the spec" without one masking the other. NOT for a pre-code plan review (that reviews a plan before any code exists), NOT for root-causing a known bug (`diagnose`), and NOT a pure reuse/simplification/efficiency pass (narrower, no bug-hunting).
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill code-review --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Code Review
7
15
 
8
16
  A code-review compares one diff against **two independent axes** — Standards and Spec — and reports them **separately**. A diff can pass one axis and fail the other: code that satisfies every convention but builds the wrong thing is a Standards-pass/Spec-fail; code that nails the issue but breaks conventions is a Spec-pass/Standards-fail. Merge or re-rank the two and one axis silently masks the other — that is the exact failure mode this method exists to prevent.
@@ -3,6 +3,14 @@ name: codebase-design
3
3
  description: "Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill codebase-design --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Codebase Design
7
15
 
8
16
  Design **deep modules**: a lot of behaviour behind a small interface, placed at a clean seam, testable through that interface. Use this language and these principles wherever code is being designed or restructured. The aim is leverage for callers, locality for maintainers, and testability for everyone.
@@ -3,6 +3,14 @@ name: codex-adapter-sync
3
3
  description: "Use to audit and update the Codex adapter after changes to CLAUDE.md, package CLAUDE.md files, .claude/skills, .claude/agents, or Codex setup. Checks AGENTS.md, .agents/skills, .codex/config.toml, .codex/agents, and .gitignore for drift."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill codex-adapter-sync --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Codex Adapter Sync
7
15
 
8
16
  Use this skill when the user asks for a Codex adapter sync, Codex drift check,
@@ -3,6 +3,14 @@ name: decision-gate
3
3
  "description": "Resolve a bounded trade-off choice or a targeted research gap with read-only investigation, a documented weigh-up, and a reasoned decision. Use when a plan or slice hinges on a concrete \"which option\" choice or a \"need to research this first\" gap that is above a binary yes/no fact (verify-spike) but below a high-stakes, hard-to-reverse, ADR-worthy decision (grill-with-docs-codex). Output is a trade-off table plus a justified pick sunk into an ADR/issue/comment. NOT for binary fact-checks (verify-spike), open-ended design feel (prototype), or bug root-cause (diagnose)."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill decision-gate --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Decision Gate
7
15
 
8
16
  A decision-gate resolves **a bounded "which option" choice — or a targeted research gap — with evidence, not a hunch.** You have two or more candidate approaches (or one approach you cannot yet commit to), the call is small enough that a full design-grill is overkill, but it is more than a single yes/no fact. The gate makes the choice **documented and defensible** instead of decided in your head.
@@ -3,6 +3,14 @@ name: diagnose
3
3
  description: "Disciplined diagnosis loop for hard bugs and performance regressions. Reproduce → minimise → hypothesise → instrument → fix → regression-test. Use when user says \"diagnose this\" / \"debug this\", reports a bug, says something is broken/throwing/failing, or describes a performance regression."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill diagnose --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Diagnose
7
15
 
8
16
  > **Skill identity (don't get confused):** the folder `diagnose` + invocation `/diagnose` map to Matt Pocock's upstream skill **`diagnosing-bugs`**. Upstream renamed `diagnose` → `diagnosing-bugs`; we deliberately keep the folder name `diagnose` (invocation stability `/diagnose`). Content = upstream `diagnosing-bugs` @ `7a83a3a`, locally adapted (description kept with full trigger coverage). Provenance/rename ledger: `docs/agents/provenance.md` (§Re-Sync-Log), at the project root.
@@ -3,6 +3,14 @@ name: domain-modeling
3
3
  description: "Build and sharpen a project's domain model. Use when the user wants to pin down domain terminology or a ubiquitous language, record an architectural decision, or when another skill needs to maintain the domain model."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill domain-modeling --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Domain Modeling
7
15
 
8
16
  > **In this repo (if present):** `CONTEXT.md` + `docs/adr/` already exist (lazily created via `/grill-with-docs`). The **ADR conventions are SSOT in `docs/adr/README.md`** (project root; status lifecycle, template, numbering) — use that convention when creating an ADR, don't shadow it with the generic [ADR-FORMAT.md](./ADR-FORMAT.md). `/grill-with-docs`(-codex) maintains CONTEXT.md + ADRs in operation; this skill is the vocabulary underneath. Provenance: `docs/agents/provenance.md`.
@@ -3,6 +3,14 @@ name: git-worktree-recover
3
3
  description: "Recovery skill for git branch mix-ups — a commit landed on the wrong branch, the branch switched unexpectedly, or work appears lost. Uses git reflog to find the misplaced commit, moves it to the right branch (git branch -f), optionally resets the wrong branch, and sets up a clean worktree. Triggers: commit on the wrong branch, branch switched on its own, this commit doesn't belong here, my work is gone, I committed to main by accident."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill git-worktree-recover --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # git-worktree-recover
7
15
 
8
16
  Recovery skill for branch mix-ups. When two processes share one checkout's global
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions \"grill me\"."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill grill-me --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
8
16
 
9
17
  Ask the questions one at a time.
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill grill-with-docs --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  <what-to-do>
8
16
 
9
17
  Interview me relentlessly about every aspect of this plan until we reach a shared understanding. Walk down each branch of the design tree, resolving dependencies between decisions one-by-one. For each question, provide your recommended answer.
@@ -4,6 +4,14 @@ description: "Implement a piece of work based on a PRD or set of issues."
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill implement --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  Implement the work described by the user in the PRD or issues.
8
16
 
9
17
  ## Pickup — claim the issue first
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Find deepening opportunities in a codebase, informed by the domain language in CONTEXT.md and the decisions in docs/adr/. Use when the user wants to improve architecture, find refactoring opportunities, consolidate tightly-coupled modules, or make a codebase more testable and AI-navigable."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill improve-codebase-architecture --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # Improve Codebase Architecture
8
16
 
9
17
  Surface architectural friction and propose **deepening opportunities** — refactors that turn shallow modules into deep ones. The aim is testability and AI-navigability.
@@ -1,14 +1,26 @@
1
1
  ---
2
2
  name: kit-release
3
- description: "Prepare and integrate a verified agent-workflow-kit release, then record separately confirmed publication intent with an annotated version tag and monitor npm/GitHub parity."
3
+ description: "Prepare, integrate and publish a verified agent-workflow-kit release: one confirmed Semver authorizes the annotated version tag, then monitor npm/GitHub parity to released."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill kit-release --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Kit Release
7
15
 
8
16
  Prepare a release deterministically. This skill owns the shipped-delta decision,
9
- metadata preparation, verification, and the separate post-merge publication
10
- gate. It delegates commit, branch push, PR, merge, and cleanup to wrapup. It
11
- never publishes to a registry or creates a GitHub release directly.
17
+ metadata preparation, verification, and the post-merge publication intent. It
18
+ delegates commit, branch push, PR, merge, and cleanup to wrapup. It never
19
+ publishes to a registry or creates a GitHub release by hand — it records intent
20
+ with the annotated tag and lets the trusted workflow publish.
21
+
22
+ The release has **one** human gate: the confirmed Semver in step 2. Everything
23
+ after it — merge, tag, publish, parity check — is the agent's to carry out.
12
24
 
13
25
  ## Workflow
14
26
 
@@ -33,8 +45,8 @@ never publishes to a registry or creates a GitHub release directly.
33
45
  Do not turn a narrower build-only or single-action request into this
34
46
  authority.
35
47
 
36
- Both routes authorize one prepared target only. Neither authorizes
37
- publication.
48
+ Either route authorizes exactly one target and that authorization carries
49
+ through to its tag and publish. This is the release's single human gate.
38
50
 
39
51
  3. Prepare that authorized exact version:
40
52
 
@@ -52,21 +64,25 @@ never publishes to a registry or creates a GitHub release directly.
52
64
  `scripts/wrapup-land.py` exclusively own commit, push, PR creation, merge,
53
65
  and cleanup. Do not reproduce those operations here.
54
66
 
55
- 5. After merge, report the exact integrated version and commit as
56
- `awaiting-tag`. Merging integrates the prepared release; it cannot start
57
- publication. Creating and pushing the annotated `v<version>` tag requires a
58
- **separate explicit confirmation** to publish that exact version. The
59
- earlier Semver confirmation or AFK preparation mandate authorized metadata
60
- preparation, not publication.
61
-
62
- 6. After that confirmation, verify that the package version on current
63
- `origin/main` is exactly `<version>`. Create a matching annotated
64
- `v<version>` tag on that commit and push only that tag. A lightweight tag,
65
- mismatching version, or commit outside canonical `main` is invalid release
66
- intent. Never infer a tag target, move an existing tag, or tag an unmerged
67
- commit.
68
-
69
- 7. Monitor the tag-triggered `release.yml` workflow and inspect its externally
67
+ 5. Publish. Merging integrates the prepared release; only the annotated tag
68
+ starts publication. Verify that the package version on current `origin/main`
69
+ is exactly `<version>`, then create and push the matching annotated
70
+ `v<version>` tag **the confirmed Semver authorizes the whole release,
71
+ through tag and publish, so do this without asking again**. The target was
72
+ chosen once, at step 2; nothing between there and here produces information
73
+ a second gate could act on. Report the integrated commit as you tag it, not
74
+ as a question.
75
+
76
+ Publication is **irreversible** npm versions cannot be reused, and the
77
+ unpublish window is narrow and breaks consumers. The safety lives in gates
78
+ that already ran, not in a prompt: `release:guard`, `kit:staleness`, the full
79
+ suite and `npm pack --dry-run` before merge, then the workflow's own tag
80
+ identity, package version, main ancestry and artifact checks after it. A
81
+ lightweight tag, a mismatching version, or a commit outside canonical `main`
82
+ is invalid release intent. Never infer a tag target, move an existing tag, or
83
+ tag an unmerged commit.
84
+
85
+ 6. Monitor the tag-triggered `release.yml` workflow and inspect its externally
70
86
  reconstructable state:
71
87
 
72
88
  ```sh
@@ -3,6 +3,14 @@ name: kit-update
3
3
  description: "Preview and transactionally apply a parity-verified agent-workflow-kit release without overwriting local modifications or auto-resolving conflicts."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill kit-update --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Kit Update
7
15
 
8
16
  Update an installed consumer only from the public scoped package
@@ -84,8 +92,13 @@ release contain the same artifact.
84
92
  core, and still unresolved capability states. Missing readiness for genuinely
85
93
  new behavior does not block a compatible kit update; only that behavior stays
86
94
  unavailable. A compatible update must stop if it would make previously
87
- available skill core unavailable. `--yes` answers only package reconciliation
88
- questions and never supplies a readiness decision. Automated update pull
95
+ available skill core unavailable. `--yes` answers only actions whose
96
+ interpretation is already known and never supplies a readiness or ownership
97
+ decision. An untracked destination at a new Kit path remains
98
+ `ambiguous-collision` under `--yes`; interactive and automated runs must
99
+ explicitly choose Project extension, Contribution Bridge, Explicit fork, or
100
+ clean Core. Diagnostics name only path, ledger/package/extension evidence,
101
+ and safe routes—never file content. Automated update pull
89
102
  requests carry the same availability summary and remain manual-merge only.
90
103
 
91
104
  For each conflicted kit-shipped file, always ask the user whether the local
@@ -97,8 +110,9 @@ release contain the same artifact.
97
110
  of the exact title and body with consumer identifiers and secrets stripped,
98
111
  then require the user's explicit approval. The consumer user does not need
99
112
  to be a kit maintainer. For a project-specific edit, recommend
100
- `npx @ikon85/agent-workflow-kit@latest own <path>` so future updates treat
101
- that path as consumer-owned.
113
+ `npx @ikon85/agent-workflow-kit@latest own <path> --as=explicit-fork` so
114
+ future updates treat that path as an independent fork. A generic experiment
115
+ retained only until it returns upstream uses `--as=contribution-bridge`.
102
116
 
103
117
  4. If a candidate is interrupted, discard its reported stage directory or
104
118
  resume the transaction through the update API's `resumeFrom` option. Do not
@@ -3,6 +3,14 @@ name: local-ci
3
3
  "description": "Run the repo's local CI gate before opening a PR — the stand-in for GitHub required status checks when your plan or repo visibility can't enforce them (a Free-plan private repo has no branch protection). Use before every PR, when a guard/test red is suspected on a branch, or when wiring/repairing the pre-push guard backstop. Triggers — \"local ci\", \"run local ci\", \"pre-PR check\", \"why is main red\", \"did a guard land red\"."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill local-ci --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Local CI
7
15
 
8
16
  A guard only protects if it runs on a **gate**. When your host can't enforce a
@@ -3,6 +3,14 @@ name: memory-lifecycle
3
3
  description: "Preview and apply a consumer-owned memory lifecycle without crossing configured roots or overwriting active, archived, or recovery evidence. Use when a user wants to restore archived memories, inspect memory placement, or run an approved memory recovery."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill memory-lifecycle --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Memory Lifecycle
7
15
 
8
16
  Coordinate the current repository's memory placement and recovery through the
@@ -50,8 +50,8 @@ node scripts/readiness.mjs check --skill orchestrate-wave --json
50
50
  > `§Verify Recipe`, `§Headless Login`, `§Landing`) and falls back to generic
51
51
  > instructions when the layer is absent. See **Phase 0**.
52
52
  >
53
- > When `projectRecipe` is active, read the filled project layer before applying
54
- > any phase-specific command below.
53
+ > Before consuming `projectRecipe`, run `node scripts/project-skill-extension.mjs inspect --skill orchestrate-wave --json`: `active` reads its `path`; `inactive` uses Core; `blocked` stops with its diagnostic.
54
+ > Project extensions may specialize Project details, but cannot weaken Core gates; a contradiction blocks and requires an Explicit fork.
55
55
  <!-- readiness:end -->
56
56
 
57
57
  ## Standing rules (all phases)
@@ -3,6 +3,14 @@ name: project-release
3
3
  description: "Preview and prepare one coherent version change across a consumer's profiled packages without duplicating release logic or creating commits, tags, pushes, publishes, or merges."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill project-release --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Project Release
7
15
 
8
16
  Prepare a consumer-owned multi-package release through the kit's shared
@@ -3,6 +3,14 @@ name: prototype
3
3
  description: "Build a throwaway prototype to flesh out a design before committing to it. Routes between two branches — a runnable terminal app for state/business-logic questions, or several radically different UI variations toggleable from one route. Use when the user wants to prototype, sanity-check a data model or state machine, mock up a UI, explore design options, or says \"prototype this\", \"let me play with it\", \"try a few designs\"."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill prototype --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Prototype
7
15
 
8
16
  A prototype is **throwaway code that answers a question**. The question decides the shape.
@@ -3,6 +3,14 @@ name: research
3
3
  description: "Investigate a question against high-trust primary sources and capture the findings as a Markdown file in the repo. Use when the user wants a topic researched, docs or API facts gathered, or reading legwork delegated to a background agent."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill research --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  Before dispatch, resolve a provider-neutral Routing intent through
7
15
  `src/lib/routeDispatcher.mjs` and require a Dispatch receipt from the shared
8
16
  spawn guard. A detected transport is not authorization; AFK dispatch stops
@@ -3,6 +3,14 @@ name: resolving-merge-conflicts
3
3
  description: "Use when you need to resolve an in-progress git merge/rebase conflict."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill resolving-merge-conflicts --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  1. **See the current state** of the merge/rebase. Check git history, and the conflicting files.
7
15
 
8
16
  2. **Find the primary sources** for each conflict. Understand deeply why each change was made, and what the original intent was. Read the commit messages, check the PRs, check original issues/tickets.
@@ -4,6 +4,14 @@ disable-model-invocation: false
4
4
  "description": "Use when the user explicitly asks for a retro after a session with PR-activity. Analyzes session friction and proposes concrete config mutations (Memory/Skill/CLAUDE.md/Hook) with per-patch approval. No file is written — findings live in the mutated config."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill retro --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # Retro — In-Session Deep-Dive
8
16
 
9
17
  Trigger: user types `/retro` (optionally with a PR/Issue number, e.g. `/retro 274`).
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Route an undertaking to the right altitude before any planning starts — a short plain-language dialog (3–6 questions) deciding between a Program, a Feature, a single Direct-Slice, or a Bug, then hand back a paste-ready start prompt for the chosen route. Use at the very start of a new build when the size is unclear (a new app, a big cross-cutting feature, or a where-do-I-start question). Owns the altitude criteria catalog; when in doubt it routes to Feature. NOT for slicing a chosen plan (to-issues) and NOT for clustering an existing backlog (board-to-waves)."
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill scale-check --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # scale-check — Route an undertaking to its altitude
8
16
 
9
17
  Answers one question in plain language: **"how big is this, and where do I start?"**
@@ -3,6 +3,14 @@ name: security-audit
3
3
  description: "Run the whole application's security audit as an independent two-model pass — two AI models audit the same code separately — then harden the remediation plan before any fix lands. Use when the user wants a security audit / security review of the entire app ('audit the app for vulnerabilities', 'is the app secure', 'security check before release'), before a release, or after the attack surface changes (new endpoint, new input source, auth change, dependency bump). NOT for reviewing a single diff/PR (that is a code review) and NOT for infrastructure hardening (firewall/ports/TLS/SSH/backups — audited separately from the application layer)."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill security-audit --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # security-audit — application-layer security audit (two-model run)
7
15
 
8
16
  Application-layer security audit of the whole repo. This skill is the **run
@@ -4,6 +4,14 @@ description: "Scaffolds the project layer the portable workflow skills assume
4
4
  disable-model-invocation: true
5
5
  ---
6
6
 
7
+ <!-- project-extension:protocol-v1:start -->
8
+ ## Project extension
9
+
10
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill setup-workflow --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
11
+
12
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
13
+ <!-- project-extension:protocol-v1:end -->
14
+
7
15
  # Setup Workflow
8
16
 
9
17
  Scaffold the **project layer** the portable workflow skills (`to-prd`, `to-issues`, `triage`, `spec-self-critique`, `retro`, `wrapup`, …) read at runtime. The generic skills ship the *how*; this skill writes the project-specific *what* into the consumer repo, where `retro`/`wrapup` then grow it over time.
@@ -48,6 +56,28 @@ Every project-layer file this skill (or `npx init`) creates begins with **one se
48
56
  - **CLAUDE.md / AGENTS.md carry no sentinel** (they are not ours) → reconcile **per section** via the block headers `## Workflow` / `## Agent skills` / `## Prod`: add a missing block, never overwrite an existing one or surrounding user content.
49
57
  - **Never overwrite filled content.** A re-run only fills what is missing/stub. End with a report: `<file>: created · filled · skipped (already filled / legacy / not-applicable)`.
50
58
 
59
+ ## Universal Project skill extensions
60
+
61
+ Every shipped skill can consume an additive Project extension at
62
+ `docs/agents/skills/<skill>.md`. A newly created extension starts with this
63
+ identity and schema marker (after the optional setup-workflow sentinel):
64
+
65
+ ```md
66
+ <!-- agent-workflow-kit: project-extension/v1; skill=<skill> -->
67
+ ```
68
+
69
+ The marker's `<skill>` must match the filename and a canonical or locally
70
+ registered skill identity. Existing non-empty files without a marker remain
71
+ supported as legacy v0 and are never rewritten merely to add the marker.
72
+ Setup and update preserve every extension byte-for-byte unless a future,
73
+ declared schema migration explicitly includes it.
74
+
75
+ Use an extension for Project language, commands, policy, and capability data
76
+ that the Core skill already knows how to apply. It is additive and cannot
77
+ weaken Core user gates, safety, ownership, or validation. Changes to parsing,
78
+ migration, evaluation, or other executable Core semantics require an
79
+ Explicit fork with a separate identity and update line.
80
+
51
81
  ## Process
52
82
 
53
83
  ### 1. Explore
@@ -1,3 +1,4 @@
1
+ <!-- agent-workflow-kit: project-extension/v1; skill=orchestrate-wave -->
1
2
  # Project layer — orchestrate-wave
2
3
 
3
4
  The generic `orchestrate-wave` skill ships the full wave-landing **mechanics**
@@ -1,3 +1,4 @@
1
+ <!-- agent-workflow-kit: project-extension/v1; skill=spec-self-critique -->
1
2
  # Project layer — spec-self-critique
2
3
 
3
4
  The generic `spec-self-critique` skill ships the 12-point checklist (the check *intents* + the structure). This file is the **project layer**: it enriches each point with project-specific incidents, grep patterns, conventions, and extra sub-checks. The skill reads it at runtime; with this file present it runs the full pass instead of warning that the layer is absent.
@@ -3,6 +3,14 @@ name: spec-self-critique
3
3
  "description": "Use AFTER writing or editing a spec (a `SPEC.md`/`PLAN.md` or any spec/design doc), BEFORE asking the user to review — runs a 12-point structural Self-Critique checklist, fixes issues inline, and emits a visible summary. Enriches each check from a project layer if one is present. Triggers right after a spec has been written. NOT for reviewing finished code/diffs (code-review) — this pass runs on the spec text itself."
4
4
  ---
5
5
 
6
+ <!-- project-extension:protocol-v1:start -->
7
+ ## Project extension
8
+
9
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill spec-self-critique --json` from the Project root. When it returns `active`, read the returned `path` and apply it as additive Project instructions. When it returns `inactive`, continue with Core only. When it returns `blocked`, stop and report its diagnostic.
10
+
11
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
12
+ <!-- project-extension:protocol-v1:end -->
13
+
6
14
  # Spec Self-Critique
7
15
 
8
16
  A portable, structural self-review pass over a freshly written spec/plan. The **generic 12-point skeleton** below ships as-is; a **project layer** (if present) enriches each point with project-specific incidents, grep patterns, conventions, and extra sub-checks.