@ikon85/agent-workflow-kit 0.34.6 → 0.36.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 (116) 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 +8 -0
  17. package/.agents/skills/kit-update/SKILL.md +32 -11
  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 +19 -3
  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 +52 -1
  29. package/.agents/skills/setup-workflow/contribution-routing.md +52 -0
  30. package/.agents/skills/setup-workflow/orchestrate-wave-seed.md +1 -0
  31. package/.agents/skills/setup-workflow/spec-self-critique-seed.md +1 -0
  32. package/.agents/skills/spec-self-critique/SKILL.md +8 -0
  33. package/.agents/skills/tdd/SKILL.md +8 -0
  34. package/.agents/skills/to-issues/SKILL.md +8 -0
  35. package/.agents/skills/to-prd/SKILL.md +8 -0
  36. package/.agents/skills/to-waves/SKILL.md +8 -0
  37. package/.agents/skills/triage/SKILL.md +8 -0
  38. package/.agents/skills/verify-spike/SKILL.md +8 -0
  39. package/.agents/skills/wayfinder/SKILL.md +8 -0
  40. package/.agents/skills/wrapup/SKILL.md +8 -0
  41. package/.claude/hooks/kit-origin-edit-hint.py +18 -13
  42. package/.claude/skills/ask-matt/SKILL.md +8 -0
  43. package/.claude/skills/audit-skills/SKILL.md +8 -0
  44. package/.claude/skills/board-to-waves/SKILL.md +8 -0
  45. package/.claude/skills/census-update/SKILL.md +8 -0
  46. package/.claude/skills/code-review/SKILL.md +8 -0
  47. package/.claude/skills/codebase-design/SKILL.md +8 -0
  48. package/.claude/skills/codex-build/SKILL.md +8 -0
  49. package/.claude/skills/codex-review/SKILL.md +8 -0
  50. package/.claude/skills/decision-gate/SKILL.md +8 -0
  51. package/.claude/skills/diagnose/SKILL.md +8 -0
  52. package/.claude/skills/domain-modeling/SKILL.md +8 -0
  53. package/.claude/skills/git-guardrails-claude-code/SKILL.md +8 -0
  54. package/.claude/skills/git-worktree-recover/SKILL.md +8 -0
  55. package/.claude/skills/grill-me/SKILL.md +8 -0
  56. package/.claude/skills/grill-me-codex/SKILL.md +8 -0
  57. package/.claude/skills/grill-with-docs/SKILL.md +8 -0
  58. package/.claude/skills/grill-with-docs-codex/SKILL.md +8 -0
  59. package/.claude/skills/implement/SKILL.md +8 -0
  60. package/.claude/skills/improve-codebase-architecture/SKILL.md +8 -0
  61. package/.claude/skills/kit-release/SKILL.md +8 -0
  62. package/.claude/skills/kit-update/SKILL.md +32 -11
  63. package/.claude/skills/local-ci/SKILL.md +8 -0
  64. package/.claude/skills/memory-lifecycle/SKILL.md +8 -0
  65. package/.claude/skills/orchestrate-wave/SKILL.md +2 -2
  66. package/.claude/skills/project-release/SKILL.md +8 -0
  67. package/.claude/skills/prototype/SKILL.md +8 -0
  68. package/.claude/skills/research/SKILL.md +8 -0
  69. package/.claude/skills/resolving-merge-conflicts/SKILL.md +8 -0
  70. package/.claude/skills/retro/SKILL.md +19 -3
  71. package/.claude/skills/scale-check/SKILL.md +8 -0
  72. package/.claude/skills/security-audit/SKILL.md +8 -0
  73. package/.claude/skills/setup-pre-commit/SKILL.md +8 -0
  74. package/.claude/skills/setup-workflow/SKILL.md +52 -1
  75. package/.claude/skills/setup-workflow/contribution-routing.md +52 -0
  76. package/.claude/skills/setup-workflow/orchestrate-wave-seed.md +1 -0
  77. package/.claude/skills/setup-workflow/spec-self-critique-seed.md +1 -0
  78. package/.claude/skills/spec-self-critique/SKILL.md +8 -0
  79. package/.claude/skills/tdd/SKILL.md +8 -0
  80. package/.claude/skills/to-issues/SKILL.md +8 -0
  81. package/.claude/skills/to-prd/SKILL.md +8 -0
  82. package/.claude/skills/to-waves/SKILL.md +8 -0
  83. package/.claude/skills/triage/SKILL.md +8 -0
  84. package/.claude/skills/verify-spike/SKILL.md +8 -0
  85. package/.claude/skills/wayfinder/SKILL.md +8 -0
  86. package/.claude/skills/wrapup/SKILL.md +8 -0
  87. package/.claude/skills/write-a-skill/SKILL.md +8 -0
  88. package/README.md +172 -5
  89. package/agent-workflow-kit.package.json +149 -89
  90. package/docs/agents/skills/local-ci.md +1 -0
  91. package/docs/agents/skills/orchestrate-wave.md +1 -1
  92. package/docs/agents/skills/spec-self-critique.md +1 -1
  93. package/package.json +1 -1
  94. package/scripts/find-by-marker.py +2 -0
  95. package/scripts/project-skill-extension.mjs +37 -0
  96. package/scripts/readiness.mjs +2 -1
  97. package/scripts/test_marker_lib.py +8 -0
  98. package/scripts/test_retro_wrapup_contract.py +6 -4
  99. package/scripts/test_skill_publish_audit.py +9 -1
  100. package/src/cli.mjs +86 -12
  101. package/src/commands/init.mjs +24 -0
  102. package/src/commands/own.mjs +7 -3
  103. package/src/commands/update.mjs +87 -21
  104. package/src/lib/bundle.mjs +5 -0
  105. package/src/lib/contributionBridge.mjs +176 -0
  106. package/src/lib/contributionRouting.mjs +152 -0
  107. package/src/lib/manifest.mjs +17 -2
  108. package/src/lib/ownershipClassifier.mjs +65 -0
  109. package/src/lib/projectSkillExtension.mjs +60 -0
  110. package/src/lib/skillRegistry.mjs +167 -0
  111. package/src/lib/updateCandidate.mjs +105 -4
  112. package/src/lib/updateDecisions.mjs +5 -0
  113. package/src/lib/updateReconcile.mjs +102 -9
  114. package/src/lib/verifyUpdateCandidate.mjs +28 -1
  115. package/src/lib/verifyUpdateCandidateProtocol.mjs +2 -0
  116. package/src/lib/verifyUpdateCandidateTransaction.mjs +19 -3
@@ -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,21 +92,34 @@ 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
92
105
  edit is a generic improvement or project-specific; never decide or act
93
- automatically. For a generic improvement, offer to file an issue in the
94
- public kit repository and keep the local edit in place as a bridge until a
95
- kit release containing the improvement lands. Before running
96
- `gh issue create --repo <owner>/agent-workflow-kit`, show a sanitized preview
97
- of the exact title and body with consumer identifiers and secrets stripped,
98
- then require the user's explicit approval. The consumer user does not need
99
- 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.
106
+ automatically. For a generic improvement retained as a bridge, run
107
+ `contribute status <path> --surface=pre-update` and follow only its
108
+ repository-capability routes. Missing, disabled, invalid, or unverifiable
109
+ configuration is a generic Consumer and receives preserve/Explicit-fork
110
+ guidance, never maintainer language or an inferred upstream target. A valid
111
+ capability may add local preparation and may describe an upstream pull
112
+ request, but the latter still needs a sanitized exact preview and separate
113
+ explicit approval before any remote command. For a project-specific edit, recommend
114
+ `npx @ikon85/agent-workflow-kit@latest own <path> --as=explicit-fork` so
115
+ future updates treat that path as an independent fork. A generic experiment
116
+ retained only until it returns upstream uses
117
+ `npx @ikon85/agent-workflow-kit@latest contribute start <path>`. Prepare its
118
+ bounded local artifact, when the route report permits it, with `contribute prepare <path>
119
+ --output=.agent-workflow-kit/contributions/<name>.json`. Both commands are
120
+ local-only; opening an issue/PR or pushing remains a separate explicit
121
+ approval. A matching released Core version retires the bridge during
122
+ reimport.
102
123
 
103
124
  4. If a candidate is interrupted, discard its reported stage directory or
104
125
  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
@@ -58,8 +58,8 @@ node scripts/readiness.mjs check --skill orchestrate-wave --json
58
58
  > `§Verify Recipe`, `§Headless Login`, `§Landing`) and falls back to generic
59
59
  > instructions when the layer is absent. See **Phase 0**.
60
60
  >
61
- > When `projectRecipe` is active, read the filled project layer before applying
62
- > any phase-specific command below.
61
+ > 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.
62
+ > Project extensions may specialize Project details, but cannot weaken Core gates; a contradiction blocks and requires an Explicit fork.
63
63
  <!-- readiness:end -->
64
64
 
65
65
  ## 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`).
@@ -156,9 +164,17 @@ Before formulating a patch in step 4, place **every** friction point on the thre
156
164
 
157
165
  **A GitHub issue is NOT a weight tier.** A real follow-up = work to track → `python3 scripts/board-sync.py create` (step-4 table), **orthogonal** to the ladder; its "weight" follows the follow-up scope. The ladder classifies **config patches**, not "turn it into a ticket".
158
166
 
159
- **Kit-repo routing target (always ask; never automatic).** When a finding lands on a kit-shipped file (a consumer-manifest entry with kit origin), ask whether the improvement is generic or project-specific. For a generic improvement, offer to file a lightweight issue against the public kit repo: a title plus a short body that states the finding, affected file, and why it is generic. For a project-specific improvement, recommend `own` (keep it consumer-owned). The consumer user does not need to be the kit maintainer.
160
-
161
- Before any `gh issue create --repo <owner>/agent-workflow-kit` runs, show the user a **sanitized preview** of the exact title and body with consumer identifiers and secrets stripped. Create the issue only after the user explicitly approves that exact text; if the title or body changes, show the revised preview and ask again. This approval is additional to the per-patch approval in step 5.
167
+ **Kit-repo routing target (capability-driven; never automatic).** When a finding
168
+ lands on a kit-shipped file (a consumer-manifest entry with kit origin), ask
169
+ whether the improvement is generic or project-specific. If it enters a
170
+ Contribution Bridge, run `agent-workflow-kit contribute status <path>
171
+ --surface=retro` and use only the reported repository-capability routes.
172
+ Missing, disabled, invalid, or unverifiable configuration is a generic Consumer:
173
+ offer preserve or Explicit fork, never infer maintainer status or an upstream
174
+ target from identity. A valid capability may offer local preparation. Before
175
+ any reported remote route runs, show the **sanitized exact preview** and require
176
+ separate explicit approval; changing the preview requires approval again. For a
177
+ project-specific improvement, recommend `own` (keep it consumer-owned).
162
178
 
163
179
  **Target missing in the project — separate two cases cleanly:**
164
180
  - **(a) Tier skill missing entirely** (e.g. a foreign project without `spec-self-critique`): no durable spec-time gate exists. **Memory is NOT a substitute** — passive recall doesn't catch a recurring spec defect before building. Report honestly: *"this project has no durable target for this tier"* + propose a `/setup-workflow` follow-up. **No fake guard via memory.**
@@ -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
@@ -3,6 +3,14 @@ name: setup-pre-commit
3
3
  description: Set up a native, zero-dependency git pre-commit hook (via core.hooksPath) that runs your project's type checks, linting, tests, or formatting before each commit. Use when the user wants to add pre-commit hooks, gate commits on checks, or wire commit-time typecheck/lint/test/format — no Husky or Node deps required.
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 setup-pre-commit --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
  # Setup Pre-Commit Hooks (native git, zero-dep)
7
15
 
8
16
  ## What This Sets Up
@@ -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
@@ -263,7 +293,8 @@ decisions without repository evidence and user confirmation.
263
293
  > manifest. It is advisory only: it never blocks, reads the manifest once, uses
264
294
  > no network, and silently fails open when the manifest cannot be read. Shell
265
295
  > redirection, formatters, and IDE edits are knowingly outside its coverage; the
266
- > skills remain the rule's primary carrier.
296
+ > skills remain the rule's primary carrier. Its Contribution Bridge follow-up
297
+ > calls the same read-only route resolver with `--surface=guard`.
267
298
 
268
299
  Activate the shipped hook by reconciling this exact entry into
269
300
  `.claude/settings.json`:
@@ -327,6 +358,26 @@ unaffected surfaces, autonomy, and advanced values. Re-read the profile before
327
358
  activation and use its fingerprint plus the exclusive profile lock; a
328
359
  concurrent user-local change blocks activation and remains byte-preserved.
329
360
 
361
+ ### 2i. Section A10 — Optional contribution return routing
362
+
363
+ > Contribution return routing lets a repository advertise a verifiable Kit
364
+ > upstream without guessing who the user is. It controls offered routes, never
365
+ > remote authorization.
366
+
367
+ Read [contribution-routing.md](./contribution-routing.md) in full. If
368
+ `contributionRouting` is absent, ask whether this repository should advertise
369
+ an upstream contribution route. **Yes** records only the user-confirmed
370
+ owner/repository and local Git remote after verifying that the remote URL
371
+ matches. **Later / No** leaves the section absent or records `enabled: false`
372
+ only when the user requests a durable opt-out. Adopt an existing valid section
373
+ without normalization and preserve every other profile section and unknown key.
374
+
375
+ Missing, disabled, contradictory, or unverifiable configuration must keep the
376
+ generic preserve/Explicit-fork routes. Never infer capability from username,
377
+ machine, checkout path, repository name, credentials, or current GitHub login.
378
+ Even a valid capability authorizes local preparation only; a pull request,
379
+ push, publish, or merge remains a separate explicit approval.
380
+
330
381
  ### 3. Section B — Triage labels
331
382
 
332
383
  > When `triage` processes an incoming issue it applies labels (or your tracker's equivalent). It needs strings you've actually configured, or it creates duplicates.
@@ -0,0 +1,52 @@
1
+ # Contribution return routing
2
+
3
+ Contribution return is an optional repository capability. It controls which
4
+ routes agents may *offer* for an explicit Contribution Bridge; it never grants
5
+ permission to mutate a remote.
6
+
7
+ The consumer-owned section in `docs/agents/workflow-capabilities.json` is:
8
+
9
+ ```json contribution-routing-capability
10
+ {
11
+ "contributionRouting": {
12
+ "schemaVersion": 1,
13
+ "enabled": true,
14
+ "upstream": {
15
+ "repository": "<owner>/<repository>",
16
+ "remote": "<local-git-remote>"
17
+ },
18
+ "workflows": {
19
+ "prepareLocal": true,
20
+ "upstreamPullRequest": {
21
+ "enabled": true,
22
+ "requiresExplicitApproval": true
23
+ }
24
+ }
25
+ }
26
+ }
27
+ ```
28
+
29
+ The resolver accepts the maintainer-capable route only when the configured Git
30
+ remote exists and its GitHub owner/repository matches `upstream.repository`.
31
+ It does not inspect usernames, home paths, machine names, the consumer
32
+ repository name, credentials, or GitHub account identity.
33
+
34
+ - Missing configuration is a generic Consumer: offer preserve or Explicit fork.
35
+ - `enabled: false` is an explicit opt-out with the same generic routes.
36
+ - Invalid, contradictory, or unverifiable configuration fails closed to those
37
+ generic routes and reports one bounded diagnostic.
38
+ - Valid configuration additionally offers local artifact preparation. It may
39
+ describe an upstream pull-request route only with
40
+ `requiresExplicitApproval: true`; this flag documents the gate and does not
41
+ satisfy it.
42
+
43
+ Use the same read-only resolver on every surface:
44
+
45
+ ```sh
46
+ agent-workflow-kit contribute status <path> --surface=retro
47
+ agent-workflow-kit contribute status <path> --surface=pre-update
48
+ agent-workflow-kit contribute status <path> --surface=guard
49
+ ```
50
+
51
+ Only `contribute prepare` writes a local bounded artifact. No contribution
52
+ command opens an issue or pull request, pushes, publishes, or merges.
@@ -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.
@@ -3,6 +3,14 @@ name: tdd
3
3
  description: Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
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 tdd --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
  # Test-Driven Development
7
15
 
8
16
  ## Philosophy
@@ -3,6 +3,14 @@ name: to-issues
3
3
  description: Break a Feature or Program plan, spec, or PRD into independently-grabbable issues on the project issue tracker. This is the single public Planning facade: explicit Feature identity uses tracer-bullet decomposition; explicit Program identity delegates to the internal graph engine.
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 to-issues --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
  # To Issues
7
15
 
8
16
  > **Skill identity (don't get confused):** the folder `to-issues` + invocation `/to-issues` map to Matt Pocock's upstream skill **`to-tickets`**. Upstream merged `to-issues` + the short-lived `to-plan` into `to-tickets` (v1.1.0); we deliberately keep the folder name `to-issues` (invocation stability, and issues are this workflow's vocabulary). Content remains our fork, compared against upstream `to-tickets` @ `d574778`. Provenance/rename ledger: `docs/agents/provenance.md` (§Re-Sync-Log), at the project root.
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Turn a locked plan (PLAN.md in the worktree, conversation context, or an externally-authored spec) into a Draft-PRD issue on the project board, then run spec-self-critique. Use after a grill (grill-me / grill-with-docs / their -codex variants) when you want to publish the PRD. Three modes — create fresh, reuse an existing cluster/Wave-less issue, or auto-detect a Program-PRD from a plan's Wellenplan chapter. Does NOT decompose into slices (that is to-issues) and does NOT set type:cluster / Wave (that is to-issues promotion)."
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 to-prd --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
  # to-prd — Draft PRD to the Board
8
16
 
9
17
  > **Skill identity (don't get confused):** the folder `to-prd` + invocation `/to-prd` map to Matt Pocock's upstream skill **`to-spec`**. Upstream renamed `to-prd` → `to-spec` (v1.1.0); we deliberately keep the folder name `to-prd` (invocation stability, and PRD is this workflow's vocabulary). Content remains our fork, compared against upstream `to-spec` @ `d574778`. Provenance/rename ledger: `docs/agents/provenance.md` (§Re-Sync-Log), at the project root.
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: "Internal Program graph engine behind the public to-issues Planning facade. Turns an explicitly identified Program-PRD into execute-ready wave anchors and slice leaves after one complete chat preview. Kept as a disabled compatibility entrypoint for existing explicit invocations; normal routing always selects to-issues."
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 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
  # to-waves — Internal Program graph engine
8
16
 
9
17
  This skill is an **Internal Program graph engine**, selected by `to-issues` only
@@ -4,6 +4,14 @@ disable-model-invocation: true
4
4
  description: Triage issues through the project board workflow. Use when user wants to triage issues, review incoming bugs or feature requests, prepare issues for an AFK agent, or manage issue workflow.
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 triage --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
  # Triage
8
16
 
9
17
  Move issues on the project issue tracker through the board-driven workflow.
@@ -3,6 +3,14 @@ name: verify-spike
3
3
  description: Answer a single yes/no factual question about reality with a minimal throwaway, read-only harness and output-proof. Use when a plan, ADR, or implementation hinges on an empirically-checkable fact — does a library API exist / behave this way on this version, does the runtime / DB / platform actually have this capability, does an external assumption hold — and you need a proven verdict before locking the decision. NOT for design exploration (prototype), bug root-cause (diagnose), or building a feature (tdd).
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 verify-spike --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
  # Verify Spike
7
15
 
8
16
  A verify-spike is **throwaway, read-only code that proves a yes/no fact about reality.** The question is binary; the spike makes the answer empirical instead of assumed.
@@ -4,6 +4,14 @@ description: Plan a huge chunk of work — more than one agent session can hold
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 wayfinder --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
  A loose idea has arrived — too big for one agent session, and wrapped in fog: the way from here to the **destination** isn't visible yet. Wayfinding is about finding that way, not charging at the destination. This skill charts the way as a **shared map** on the repo's issue tracker, then works its tickets one at a time until the route is clear.
8
16
 
9
17
  The destination varies per effort, and naming it is the first act of charting — it shapes every ticket. It might be a spec to hand off and iterate on, a decision to lock before planning starts, or a change made in place like a data-structure migration. The map is domain-agnostic — engineering work, course content, whatever fits the shape.
@@ -14,6 +14,14 @@ description: >-
14
14
  push, a conflicting PR, or red (FAILURE) checks.
15
15
  ---
16
16
 
17
+ <!-- project-extension:protocol-v1:start -->
18
+ ## Project extension
19
+
20
+ Before applying this Core skill, run `node scripts/project-skill-extension.mjs inspect --skill wrapup --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.
21
+
22
+ Project extensions may specialize Project details, but cannot weaken Core user gates, safety, ownership, or validation. A contradiction blocks and requires an Explicit fork.
23
+ <!-- project-extension:protocol-v1:end -->
24
+
17
25
  # wrapup — land PR & tear down worktree
18
26
 
19
27
  Trigger: user types `/wrapup` (optionally with a PR number). **Manual only** — `disable-model-invocation: true`, no hook, no auto-invoke.
@@ -3,6 +3,14 @@ name: write-a-skill
3
3
  description: Create, write, edit, and improve agent skills — the vocabulary and principles that make a skill predictable (invocation, information hierarchy, progressive disclosure, leading words, pruning, failure modes). Use when the user wants to create, write, edit, refactor, or improve a skill.
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 write-a-skill --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
  # Writing Skills
7
15
 
8
16
  > **Skill identity (don't get confused):** the folder `write-a-skill` + invocation `/write-a-skill` map to Matt Pocock's upstream skill **`writing-great-skills`**. Upstream replaced the old process-/template-based `write-a-skill` with this vocabulary/principles reference and switched it to **user-invoked** (`disable-model-invocation: true`). We keep the folder name `write-a-skill` (invocation stability) **and** deliberately keep it **model-invoked** (auto-fires on "create/write a skill" + `/write-a-skill`, as referenced in CLAUDE.md `## Workflow`). Content = upstream `writing-great-skills` @ `7a83a3a`, locally adapted. Provenance/rename ledger: `docs/agents/provenance.md` (§Re-Sync-Log), at the project root.