workflow-toolkit 1.0.1

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 (142) hide show
  1. package/.agents/skills/ponytail/SKILL.md +111 -0
  2. package/.agents/skills/ponytail-audit/SKILL.md +37 -0
  3. package/.agents/skills/ponytail-debt/SKILL.md +41 -0
  4. package/.agents/skills/ponytail-gain/SKILL.md +47 -0
  5. package/.agents/skills/ponytail-help/SKILL.md +70 -0
  6. package/.agents/skills/ponytail-review/SKILL.md +52 -0
  7. package/.agents/skills/prompt-review/SKILL.md +60 -0
  8. package/.agents/skills/wtk/SKILL.md +64 -0
  9. package/.agents/skills/wtk/references/artifacts.md +82 -0
  10. package/.agents/skills/wtk/references/evidence.md +68 -0
  11. package/.agents/skills/wtk/references/git.md +75 -0
  12. package/.agents/skills/wtk/references/test-contract.md +76 -0
  13. package/.agents/skills/wtk/references/validation.md +127 -0
  14. package/.agents/skills/wtk-config/SKILL.md +102 -0
  15. package/.agents/skills/wtk-config/assets/agents/claude/deep-reviewer.md +40 -0
  16. package/.agents/skills/wtk-config/assets/agents/claude/designer.md +57 -0
  17. package/.agents/skills/wtk-config/assets/agents/claude/explorer.md +41 -0
  18. package/.agents/skills/wtk-config/assets/agents/claude/implementer.md +57 -0
  19. package/.agents/skills/wtk-config/assets/agents/claude/planner.md +68 -0
  20. package/.agents/skills/wtk-config/assets/agents/claude/verifier.md +80 -0
  21. package/.agents/skills/wtk-config/assets/agents/codex/deep-reviewer.toml +41 -0
  22. package/.agents/skills/wtk-config/assets/agents/codex/designer.toml +55 -0
  23. package/.agents/skills/wtk-config/assets/agents/codex/explorer.toml +35 -0
  24. package/.agents/skills/wtk-config/assets/agents/codex/implementer.toml +52 -0
  25. package/.agents/skills/wtk-config/assets/agents/codex/planner.toml +66 -0
  26. package/.agents/skills/wtk-config/assets/agents/codex/verifier.toml +78 -0
  27. package/.agents/skills/wtk-config/assets/agents/cursor/deep-reviewer.md +38 -0
  28. package/.agents/skills/wtk-config/assets/agents/cursor/designer.md +55 -0
  29. package/.agents/skills/wtk-config/assets/agents/cursor/explorer.md +39 -0
  30. package/.agents/skills/wtk-config/assets/agents/cursor/implementer.md +55 -0
  31. package/.agents/skills/wtk-config/assets/agents/cursor/planner.md +66 -0
  32. package/.agents/skills/wtk-config/assets/agents/cursor/verifier.md +79 -0
  33. package/.agents/skills/wtk-config/scripts/ad-index.py +123 -0
  34. package/.agents/skills/wtk-config/scripts/repository_intelligence.py +671 -0
  35. package/.agents/skills/wtk-config/scripts/workflow_config.py +972 -0
  36. package/.agents/skills/wtk-deep-review/SKILL.md +164 -0
  37. package/.agents/skills/wtk-deep-review/assets/PROMPT.md +56 -0
  38. package/.agents/skills/wtk-deep-review/assets/REVIEW_UI.html +1340 -0
  39. package/.agents/skills/wtk-deep-review/assets/findings.schema.json +113 -0
  40. package/.agents/skills/wtk-deep-review/references/context-pack.md +88 -0
  41. package/.agents/skills/wtk-deep-review/references/orchestration.md +164 -0
  42. package/.agents/skills/wtk-deep-review/references/output-contracts.md +149 -0
  43. package/.agents/skills/wtk-deep-review/references/publish-github.md +83 -0
  44. package/.agents/skills/wtk-deep-review/references/state-and-learnings.md +64 -0
  45. package/.agents/skills/wtk-deep-review/references/subagent-runtimes.md +33 -0
  46. package/.agents/skills/wtk-deep-review/references/taxonomy.md +70 -0
  47. package/.agents/skills/wtk-deep-review/scripts/_common.py +371 -0
  48. package/.agents/skills/wtk-deep-review/scripts/build_jobs.py +561 -0
  49. package/.agents/skills/wtk-deep-review/scripts/build_knowledge.py +349 -0
  50. package/.agents/skills/wtk-deep-review/scripts/build_manifest.py +479 -0
  51. package/.agents/skills/wtk-deep-review/scripts/graft_context.py +160 -0
  52. package/.agents/skills/wtk-deep-review/scripts/graphify_context.py +75 -0
  53. package/.agents/skills/wtk-deep-review/scripts/merge_findings.py +313 -0
  54. package/.agents/skills/wtk-deep-review/scripts/render_html.py +240 -0
  55. package/.agents/skills/wtk-deep-review/scripts/render_review.py +282 -0
  56. package/.agents/skills/wtk-deep-review/scripts/run_jobs.py +436 -0
  57. package/.agents/skills/wtk-deep-review/scripts/token_metrics.py +369 -0
  58. package/.agents/skills/wtk-discover/SKILL.md +270 -0
  59. package/.agents/skills/wtk-discover/references/document-format.md +149 -0
  60. package/.agents/skills/wtk-implement/SKILL.md +95 -0
  61. package/.agents/skills/wtk-implement/references/checklist-format.md +116 -0
  62. package/.agents/skills/wtk-implement/references/screens.md +129 -0
  63. package/.agents/skills/wtk-implement/references/test-policy.md +152 -0
  64. package/.agents/skills/wtk-implement/references/verify.md +297 -0
  65. package/.agents/skills/wtk-knowledge-check/SKILL.md +16 -0
  66. package/.agents/skills/wtk-knowledge-check/scripts/check.ts +502 -0
  67. package/.agents/skills/wtk-knowledge-check/scripts/cli.ts +32 -0
  68. package/.agents/skills/wtk-knowledge-check/scripts/frontmatter.ts +44 -0
  69. package/.agents/skills/wtk-lean/.skill-meta.json +6 -0
  70. package/.agents/skills/wtk-lean/NOTICE.md +18 -0
  71. package/.agents/skills/wtk-lean/SKILL.md +137 -0
  72. package/.agents/skills/wtk-lean/references/build.md +168 -0
  73. package/.agents/skills/wtk-lean/references/checks.md +253 -0
  74. package/.agents/skills/wtk-lean/references/memory.md +156 -0
  75. package/.agents/skills/wtk-lean/references/plan.md +514 -0
  76. package/.agents/skills/wtk-lean/references/verify.md +336 -0
  77. package/.agents/skills/wtk-lean/scripts/check_commit.py +121 -0
  78. package/.agents/skills/wtk-lean/scripts/fixtures/checks.md +98 -0
  79. package/.agents/skills/wtk-lean/scripts/fixtures/plan.md +119 -0
  80. package/.agents/skills/wtk-lean/scripts/fixtures/verification.md +41 -0
  81. package/.agents/skills/wtk-lean/scripts/lessons.py +412 -0
  82. package/.agents/skills/wtk-lean/scripts/selftest.py +401 -0
  83. package/.agents/skills/wtk-lean/scripts/validate_checks.py +417 -0
  84. package/.agents/skills/wtk-lean/scripts/validate_plan.py +580 -0
  85. package/.agents/skills/wtk-lean/scripts/validate_verification.py +357 -0
  86. package/.agents/skills/wtk-plan/SKILL.md +102 -0
  87. package/.agents/skills/wtk-plan/references/document-format.md +222 -0
  88. package/.agents/skills/wtk-qa/SKILL.md +14 -0
  89. package/.agents/skills/wtk-qa-execute/SKILL.md +115 -0
  90. package/.agents/skills/wtk-qa-execute/references/fix-loop.md +23 -0
  91. package/.agents/skills/wtk-qa-execute/references/session-protocol.md +25 -0
  92. package/.agents/skills/wtk-qa-plan/SKILL.md +111 -0
  93. package/.agents/skills/wtk-qa-plan/references/profile.md +35 -0
  94. package/.agents/skills/wtk-ship/SKILL.md +49 -0
  95. package/.agents/skills/wtk-ship/remediation.py +170 -0
  96. package/.agents/skills/wtk-ship/scripts/close_feature.py +83 -0
  97. package/.agents/skills/wtk-ship/scripts/review_convergence.py +373 -0
  98. package/.wtk.toml.example +93 -0
  99. package/AGENTS.md +129 -0
  100. package/NOTICE.md +12 -0
  101. package/README.md +440 -0
  102. package/bin/wtk.js +25 -0
  103. package/docs/toolkit/README.md +56 -0
  104. package/docs/toolkit/decisions.md +61 -0
  105. package/docs/toolkit/guidelines/CONTEXT-BUDGET.md +64 -0
  106. package/docs/toolkit/guidelines/DX.md +67 -0
  107. package/docs/toolkit/guidelines/FRONTEND.md +73 -0
  108. package/docs/toolkit/guidelines/KNOWLEDGE-WIKI.md +128 -0
  109. package/docs/toolkit/guidelines/MODELING.md +134 -0
  110. package/docs/toolkit/guidelines/QA-EXECUTION.md +46 -0
  111. package/docs/toolkit/guidelines/QA-SCENARIOS.md +165 -0
  112. package/docs/toolkit/guidelines/REVIEW-ROUNDS.md +160 -0
  113. package/docs/toolkit/guidelines/SECURITY.md +160 -0
  114. package/docs/toolkit/guidelines/UI-UX.md +117 -0
  115. package/docs/toolkit/guidelines/WORKFLOW-MEMORY.md +73 -0
  116. package/docs/toolkit/guidelines.md +50 -0
  117. package/docs/toolkit/loop.md +77 -0
  118. package/docs/toolkit/purpose.md +51 -0
  119. package/docs/toolkit/repository-intelligence.md +53 -0
  120. package/docs/toolkit/reviews.md +77 -0
  121. package/knowledge/AGENTS.md +316 -0
  122. package/knowledge/raw/README.md +17 -0
  123. package/package.json +74 -0
  124. package/scripts/install_security_skills.py +816 -0
  125. package/scripts/installer/engine.js +254 -0
  126. package/scripts/installer/knowledge.js +28 -0
  127. package/scripts/installer/packets.js +77 -0
  128. package/scripts/installer/terminal.js +98 -0
  129. package/scripts/installer/transaction.js +75 -0
  130. package/skills-lock.json +92 -0
  131. package/templates/adoption/agents/core.md +23 -0
  132. package/templates/adoption/agents/quality.md +3 -0
  133. package/templates/adoption/knowledge/wiki/architecture/index.md +3 -0
  134. package/templates/adoption/knowledge/wiki/decisions/index.md +3 -0
  135. package/templates/adoption/knowledge/wiki/design/index.md +3 -0
  136. package/templates/adoption/knowledge/wiki/domain/index.md +3 -0
  137. package/templates/adoption/knowledge/wiki/index.md +3 -0
  138. package/templates/adoption/knowledge/wiki/log.md +3 -0
  139. package/templates/adoption/knowledge/wiki/open-questions/index.md +3 -0
  140. package/templates/adoption/knowledge/wiki/product/index.md +3 -0
  141. package/templates/adoption/knowledge/wiki/research/index.md +3 -0
  142. package/templates/adoption/product/AGENT-CONTEXT.md +25 -0
@@ -0,0 +1,93 @@
1
+ version = 3
2
+
3
+ [parallelization]
4
+ mode = "disabled" # the Lean builder is sequential; resource serialization remains opt-in
5
+ max_workers = "auto" # auto starts at 2 and scales to 4 when healthy
6
+ # Optional repository-relative executable for resource-bearing lanes.
7
+ # resource_provider = "tools/workflow_resources"
8
+
9
+ [deep_review]
10
+ cadence = "skip" # deep-review is on demand; choose slice, feature, or grouped.N to schedule it
11
+
12
+ # Post-cap remediation halts after this many consecutive non-progress attempts.
13
+ # Default 3. 0 means unbounded: never halt for a stall.
14
+ [remediation]
15
+ stall_attempts = 3
16
+
17
+ [profiles.mixed]
18
+ implementer = "claude"
19
+ verifier = "codex"
20
+ explorer = "cursor"
21
+ deep_reviewer = "codex"
22
+
23
+ [models.claude.planner]
24
+ model = "opus"
25
+ effort = "high"
26
+
27
+ [models.claude.implementer]
28
+ model = "opus"
29
+ effort = "medium"
30
+
31
+ [models.claude.verifier]
32
+ model = "opus"
33
+ effort = "medium"
34
+
35
+ [models.claude.explorer]
36
+ model = "sonnet"
37
+ effort = "medium"
38
+
39
+ [models.claude.deep_reviewer]
40
+ model = "sonnet"
41
+ effort = "high"
42
+
43
+ [models.claude.designer]
44
+ model = "inherit"
45
+ effort = "high"
46
+
47
+ [models.codex.planner]
48
+ model = "gpt-5.6-sol"
49
+ effort = "high"
50
+
51
+ [models.codex.implementer]
52
+ model = "gpt-5.6-luna"
53
+ effort = "max"
54
+
55
+ [models.codex.verifier]
56
+ model = "gpt-5.6-sol"
57
+ effort = "high"
58
+
59
+ [models.codex.explorer]
60
+ model = "gpt-5.6-luna"
61
+ effort = "medium"
62
+
63
+ [models.codex.deep_reviewer]
64
+ model = "gpt-5.6-luna"
65
+ effort = "high"
66
+
67
+ [models.codex.designer]
68
+ model = "gpt-6-astra"
69
+ effort = "high"
70
+
71
+ [models.cursor.planner]
72
+ model = "cursor-grok-4.6"
73
+ effort = "high"
74
+
75
+ [models.cursor.implementer]
76
+ model = "gpt-5.6-luna"
77
+ effort = "high"
78
+
79
+ [models.cursor.verifier]
80
+ model = "cursor-grok-4.6"
81
+ effort = "medium"
82
+
83
+ [models.cursor.explorer]
84
+ model = "gpt-5.6-luna"
85
+ effort = "medium"
86
+
87
+ [models.cursor.deep_reviewer]
88
+ model = "gpt-5.6-luna"
89
+ effort = "high"
90
+
91
+ [models.cursor.designer]
92
+ model = "claude-fable-5-1-thinking-high"
93
+ effort = "high"
package/AGENTS.md ADDED
@@ -0,0 +1,129 @@
1
+ # Agent operating system
2
+
3
+ This file is the delivery workflow. It is not a product description.
4
+
5
+ ## What this project is
6
+
7
+ Read `docs/product/AGENT-CONTEXT.md` before product-specific work. It holds identity, critical
8
+ constraints, and role/task routes; load only its cited references. Surface missing required context
9
+ as a named gap; do not recurse through product/history directories.
10
+
11
+ ## This chat's role
12
+
13
+ **Planner for feature work**, unless spawned as implementer, explorer, verifier, or designer.
14
+
15
+ For features, Specify + Design + Tasks here. After approval, dispatch **implementer** and stay. Verifier is a
16
+ **new** session — never the implementer's chat, never this one if it wrote the code.
17
+
18
+ For bounded maintenance under `.agents/skills/wtk/references/validation.md`, the active agent edits and validates directly; delegation
19
+ is optional when it adds useful independent work, not a required handoff.
20
+ Spawn the named agent without model overrides; use `explorer` for feature exploration and traces.
21
+ Local `.wtk.toml` owns provider settings; `wtk-config` owns packet generation and frozen feature routes.
22
+ Provider definitions are real files, not symlinks.
23
+
24
+ ## Critical rules
25
+
26
+ - Write all project artifacts in English: code, identifiers, comments, filenames, documentation,
27
+ specs, commit messages, and PR titles/descriptions. Conversation may follow the user's language;
28
+ non-English messages do not change the artifact language.
29
+ - **Do not preserve backward compatibility.** Remove obsolete paths instead of adding compatibility
30
+ layers, fallbacks, or migrations. A rename updates code, schema, API, tests and docs in one change.
31
+ - **Never weaken, skip or delete a test to make a gate pass.**
32
+ - Derive tests from acceptance criteria or an identified invariant, not implementation details or a
33
+ coverage target. Extend the canonical suite at the owning layer.
34
+ - **Remote delivery follows `wtk-ship`.** Invoking it, or a human go-ahead on proven-ready work,
35
+ authorizes push, one pull request, and merge after readiness is rechecked; never ask between those
36
+ steps; stop at the pull request only when told so up front. Readiness is not authorization for
37
+ deploy/release, production mutations, force-push, direct push to `main`, or unrelated remote actions.
38
+ - Before editing agent instructions or guidelines, read `docs/toolkit/guidelines/CONTEXT-BUDGET.md`.
39
+ Keep shared rules in one place and load conditional guidance only for the relevant task.
40
+ - Offer to record durable observations or decisions missing from the documents: name the destination
41
+ and ask. Writing `knowledge/` requires a yes and follows `docs/toolkit/guidelines/KNOWLEDGE-WIKI.md`.
42
+
43
+ ## How work happens
44
+
45
+ Use `wtk` as the entrypoint; it selects feature work or bounded maintenance from the request and
46
+ existing artifacts. At the start of workflow work, activate `ponytail`
47
+ at `full` and keep it active for the entire session: Specify, Design, Tasks, Execute, every
48
+ subagent prompt, fix, and review, until the human explicitly says `stop ponytail` or `normal mode`.
49
+
50
+ Continue authorized work through implementation, applicable validation and local commit. Resolve
51
+ routine choices and fix failures caused by the change without asking again; ask only for missing
52
+ decisions or new authority. Planning-only requests still end at the reviewable plan.
53
+
54
+ After a coherent edit batch, use the existing formatter on changed files, when configured, then the
55
+ applicable validation. Keep successful formatter output silent. `.agents/skills/wtk/references/validation.md`
56
+ owns check selection and evidence reuse; do not install a formatter solely for an edit.
57
+ When selecting or repeating gates, apply incremental validation by impact from that reference.
58
+
59
+ **Public hierarchy is `Feature -> Slice -> Check`.** A slice is observable end-to-end behaviour;
60
+ a check is a proof-backed obligation. `plan.md` freezes decisions and `checks.md` freezes obligations.
61
+ One builder handles whole slices sequentially; the coordinator owns handoff, verification, integration
62
+ and cleanup. After Build, one fresh Verifier covers the complete feature range. `wtk-lean` owns the
63
+ phase procedures; `wtk-config` owns review cadence. Every counted claim cites its producing command.
64
+
65
+ Delivery is human-scheduled. Git and the artifacts named below own durable state.
66
+
67
+ ## wtk-lean
68
+
69
+ profile: standard
70
+ budget: 150k
71
+
72
+ ## Load (the heading, not the whole file)
73
+
74
+ | When | Open |
75
+ | --- | --- |
76
+ | Writing, planning, or breaking a spec into tasks | `.agents/skills/wtk/references/test-contract.md` |
77
+ | Starting a task in a multi-task feature | `docs/toolkit/guidelines/WORKFLOW-MEMORY.md` |
78
+ | Specify touches a security surface | `docs/toolkit/guidelines/SECURITY.md` — `## 2. At Specify — declare the surfaces` |
79
+ | Writing tests for an abuse case | `docs/toolkit/guidelines/SECURITY.md` — `## 3. At the test contract — abuse cases get IDs` |
80
+ | Review residual | `docs/toolkit/guidelines/SECURITY.md` — `## 5. At review — the residual only` |
81
+ | Adds or changes a screen | `docs/toolkit/guidelines/UI-UX.md` |
82
+ | Front-end code or a mockup | `docs/toolkit/guidelines/FRONTEND.md` — only the heading in dispute |
83
+ | Module boundary, port, or domain type | `docs/toolkit/guidelines/MODELING.md` |
84
+ | Public surface — route, CLI verb, config key | `docs/toolkit/guidelines/DX.md` |
85
+ | Diff changes user-visible behaviour | `docs/toolkit/guidelines/QA-SCENARIOS.md` |
86
+ | QA pass at the end of a feature | `docs/toolkit/guidelines/QA-EXECUTION.md` |
87
+ | Reviewing, or acting on findings | `docs/toolkit/guidelines/REVIEW-ROUNDS.md` |
88
+ | Resolving feature workflow | `.agents/skills/wtk-config/SKILL.md` |
89
+ | About to claim done, or to commit | `.agents/skills/wtk/references/evidence.md` |
90
+ | Choosing which gate to run | `.agents/skills/wtk/references/validation.md` |
91
+ | Branch or worktree | `.agents/skills/wtk/references/git.md` |
92
+ | Keep or discard an artifact | `.agents/skills/wtk/references/artifacts.md` |
93
+ | A rule stated in more than one document | `knowledge/wiki/index.md`, then the concept |
94
+ | Recording or verifying the bundle | `docs/toolkit/guidelines/KNOWLEDGE-WIKI.md` |
95
+ | Editing this file or a guideline | `docs/toolkit/guidelines/CONTEXT-BUDGET.md` |
96
+ | Why a past choice (`AD-NNN`) | `.specs/AD-INDEX.md`; body `rg -A 20 '^### AD-NNN' .specs/STATE.md` |
97
+ | Resume | `rg -A 20 '^## Handoff' .specs/STATE.md`, then reconcile Handoff + git and consult the current local `tasks.md` state when present, or the inline execution plan when Tasks was skipped |
98
+
99
+ Docs and formatting do not trigger `SECURITY.md`.
100
+
101
+ `AD-NNN` (three digits, `.specs/STATE.md`) are project decisions. Architecture invariants live in the
102
+ consuming project's architecture docs. Cite the file with the label. Do not invent invariant ids in
103
+ this pack.
104
+
105
+ Recording an `AD-NNN` also runs `python3 .agents/skills/wtk-config/scripts/ad-index.py` in that commit. Lean validators
106
+ live in `.agents/skills/wtk-lean/scripts/`; the consuming project owns `make check`.
107
+
108
+ ## Where the truth lives
109
+
110
+ | You need | Read |
111
+ | --- | --- |
112
+ | What to build and why | `docs/product/` |
113
+ | How the system is shaped | `docs/architecture/` |
114
+ | How it looks and behaves | `docs/design/` |
115
+ | Why a past choice was made | `.specs/AD-INDEX.md` |
116
+ | Versioned feature requirements and proof state | `.specs/features/<feature>/plan.md`, `checks.md`, `verification.md` |
117
+ | What the product currently promises users | `docs/qa/scenarios/` |
118
+
119
+ ## Isolated checkouts
120
+
121
+ If the consuming project isolates checkouts (worktrees, sibling clones), **each checkout owns its
122
+ runtime**. Never set `reuseExistingServer: true` across siblings — that lets a gate in one checkout
123
+ silently test another's application.
124
+
125
+ ## Commit style
126
+
127
+ Conventional Commits: `<type>(<scope>): <description>`, types `feat|fix|refactor|perf|docs|test|build|ci`.
128
+ One commit per task. One commit per review-remediation batch. If a pre-commit hook fails, fix the
129
+ issue and make a new commit — never `--amend`.
package/NOTICE.md ADDED
@@ -0,0 +1,12 @@
1
+ # Workflow Toolkit notices
2
+
3
+ The executable, installer, and bundled support scripts are project-owned MIT-licensed source.
4
+ The workflow skill content is CC BY 4.0 unless its frontmatter states otherwise.
5
+
6
+ The integrated Lean skill is an adaptation of Tech Leads Club's `tlc-spec-lean` at commit
7
+ `0ab82f644cd9caf94c65347a50ad934800b0cbc4`. Its source URL, content hash, and `CC-BY-4.0`
8
+ license are pinned in [`skills-lock.json`](skills-lock.json) and its attribution is retained in
9
+ [`.agents/skills/wtk-lean/NOTICE.md`](.agents/skills/wtk-lean/NOTICE.md).
10
+
11
+ Project-owned skill adaptations retain their per-file `CC-BY-4.0` frontmatter. External skill
12
+ sources and reviewed revisions remain listed in [`skills-lock.json`](skills-lock.json).
package/README.md ADDED
@@ -0,0 +1,440 @@
1
+ # Workflow Toolkit
2
+
3
+ The npm package is `workflow-toolkit`; the executable is `wtk`.
4
+
5
+ An operating system for agents. It ships the workflow-owned [`wtk`](.agents/skills/wtk/SKILL.md)
6
+ router and its Lean skills (`wtk-lean`, `wtk-discover`, `wtk-plan`, `wtk-implement`)
7
+ with a capped delivery loop, countable tests and security surfaces, and a knowledge bundle. It is
8
+ not a product template and not a stack starter.
9
+
10
+ The design problem is the usual one: **ship, without lying about quality**. Unbounded review feels
11
+ responsible and never finishes. A green suite with no spec contract ships bugs. This pack picks a
12
+ middle: small vertical slices, cheap gates while building, a hard cap on review rounds, and a
13
+ human-owned merge.
14
+
15
+ ## Quick start
16
+
17
+ From the repository you want to install into, run the guided Node.js installer:
18
+
19
+ ```bash
20
+ npx workflow-toolkit install
21
+ ```
22
+
23
+ The command targets the current directory, requires Node.js 18 or newer, and walks through module
24
+ selection, state assessment, a complete preview, conflict decisions, final confirmation, and a
25
+ result summary. It never requires Python. Existing files that are replaced or removed are copied
26
+ byte-for-byte with their modes into `.my-workflow/backups/<UTC timestamp>/`; the adoption manifest
27
+ is published last. Cancelling at any prompt writes nothing.
28
+
29
+ Choose `core`, `quality`, or `extras`; selecting any non-core module also selects `core`.
30
+ Every module is shown as `not installed`, `up to date`, `outdated`, `modified`, or `conflict`. A
31
+ conflict must be explicitly backed up and replaced, excluded, or cancelled. Successful replacements
32
+ that affect consumer guidance include a `knowledge-transfer.md` checklist with a pending human
33
+ transfer; consumer knowledge is never merged automatically.
34
+
35
+ The terminal wizard supports 80×24 and 120×40 layouts and `NO_COLOR=1`. The package's complete
36
+ current workflow is documented in [docs/toolkit/](docs/toolkit/).
37
+
38
+ Start here: **[docs/toolkit/](docs/toolkit/)** — an index of every stage, guideline, and choice.
39
+
40
+ ## Purpose
41
+
42
+ | Delivery | Reliability |
43
+ | --- | --- |
44
+ | Auto-sized planning (one line needs no spec) | Tests assert spec outcomes, not the implementation |
45
+ | Proportional scoped gate; full gate only when selected | Never weaken a test to go green |
46
+ | Nitpicks become filed issues, not extra rounds | Critical and Major still hold the ship |
47
+ | `ponytail` at `full` — shortest code that works | Security surfaces declared and given `SEC-` ids |
48
+ | `wtk-ship` scopes remote delivery | Its invocation authorizes the feature-branch push, one pull request, and merge after readiness is rechecked; readiness is evidence, not authorization for deploy/release, production mutations, force-push, direct `main` push, or unrelated remote actions |
49
+
50
+ The loop, the caps, and the guidelines are the mechanism. The tour explains **why** each exists.
51
+ `AGENTS.md` is what agents run.
52
+
53
+ ## Current workflow
54
+
55
+ Use plain intent in the request:
56
+
57
+ - “Visual polish / UI-only correction; I am doing manual QA” keeps adjustments to colors, spacing,
58
+ typography, alignment, borders, and layout on the narrow inspect → implement → targeted check →
59
+ commit path when behavior stays unchanged.
60
+ - “Feature” starts the smallest spec and slice route that fits the behavior. “Cross-feature” sets a
61
+ broader mapping floor. A neutral Linear `issue` is classified from its concrete outcome, not its
62
+ label.
63
+ - Documentation maintenance, agent-instruction changes, and mixed executable changes automatically
64
+ use proportional checks from `.agents/skills/wtk/references/validation.md`. Named risk or changed public behavior selects stronger
65
+ evidence. Confirmed wtk-deep-review defects are fixed inside their run; cosmetics become follow-up work.
66
+
67
+ The feature path is Plan → Checks → Build → Verify. Builders use whole observable slices and
68
+ coherent commits, then one fresh independent Technical Verifier proves the complete feature range.
69
+ Deep Review is optional and defaults to `skip`; QA runs when the changed surface requires a user-visible
70
+ walk; the full gate remains selected by changed behavior and concrete risk.
71
+
72
+ For UI work, Designer starts with constraints, reads selected references, and inspects existing
73
+ components read-only. A design tool or isolated prototype supports exploration when useful. Three
74
+ alternatives apply when a new screen or meaningful redesign leaves an actual design choice open;
75
+ existing patterns handle bounded compositions. One exploration and one refinement is the default.
76
+ Human visual acceptance is recorded only after the human confirms it.
77
+
78
+ The shared workflow stays in `AGENTS.md`. Keep the product index short and point to existing
79
+ documents, for example:
80
+
81
+ ```markdown
82
+ ## Critical constraints
83
+ - [Only the project constraints every task must see.]
84
+
85
+ ## Role/task routes
86
+ | Role or task | Read only |
87
+ | --- | --- |
88
+ | Visual polish | docs/design/SYSTEM.md#tokens-and-accessibility |
89
+ | Customer-facing copy | docs/brand/VOICE.md |
90
+ | Feature planning | docs/product/OVERVIEW.md and affected journey references |
91
+ | Implementation | Assigned spec/task and the relevant architecture sections |
92
+ ```
93
+
94
+ These paths are examples: replace them with real files and headings in your project. A visual-polish
95
+ task does not load the voice guide or all product journeys merely because those documents exist.
96
+ Project-specific operational rules, such as Linear routing and environment setup, can live in
97
+ separate references selected by the matching task.
98
+
99
+ ## Credits and provenance
100
+
101
+ This workflow is maintained by Antonio Fulgêncio. The process builds on work from the following
102
+ authors and communities:
103
+
104
+ - Tech Leads Club: the adapted [`wtk`](.agents/skills/wtk/SKILL.md),
105
+ based on [`tlc-spec-driven`](https://github.com/tech-leads-club/agent-skills/tree/main/skills/tlc-spec-driven),
106
+ and the security gate with its [security skills](https://github.com/tech-leads-club/agent-skills/tree/main/skills).
107
+ The integrated Lean source is pinned to commit `0ab82f644cd9caf94c65347a50ad934800b0cbc4` under
108
+ CC BY 4.0; see [`NOTICE.md`](NOTICE.md) and [`skills-lock.json`](skills-lock.json).
109
+ - Pedro Nauck: [`wtk-deep-review`](https://github.com/pedronauck/skills/tree/main/skills/mine/wtk-deep-review),
110
+ whose review workflow is adapted here.
111
+ - The project-owned `wtk-qa-plan` and `wtk-qa-execute` skills are Antonio's adaptations, inspired by Pedro's
112
+ [`qa-report`](https://github.com/pedronauck/skills/tree/main/skills/mine/qa-report) and
113
+ [`qa-execution`](https://github.com/pedronauck/skills/tree/main/skills/mine/qa-execution).
114
+
115
+ The QA skills use their own wording and structure for this workflow; the links above identify the
116
+ inspiration and do not claim upstream authorship.
117
+
118
+ The workflow references four external security skills:
119
+
120
+ - `security-spec` for security requirements and negative tests during Specify;
121
+ - `security-threat-model` for repository-grounded threats and trust boundaries;
122
+ - `security-implementation` for secure-by-default implementation and hardening;
123
+ - `security-review` for high-confidence residual vulnerability reviews.
124
+
125
+ Reviewed copies are versioned here for local agents, but excluded from the npm package.
126
+ Their GitHub source, canonical path, reviewed commit, CLI
127
+ version (`1.5.23`), and content hash are authoritative in [`skills-lock.json`](skills-lock.json).
128
+ Adoption prints a
129
+ separate installer command; run it only after explicit authorization because it uses the network
130
+ and writes the consumer's `.agents/skills/` tree. It does not install `latest` or silently update
131
+ these dependencies.
132
+
133
+ ## Guided installation details
134
+
135
+ Copy the loop, not the product. New projects receive a neutral, consumer-owned
136
+ `docs/product/AGENT-CONTEXT.md` index; fill its identity and routes with existing project references
137
+ instead of copying this source pack's profile. Existing projects preserve their filled product
138
+ paragraph and product-owned documentation. Knowledge transfer is always a human review step.
139
+
140
+ The three fixed modules are `core` (Lean operating loop and shared tooling), `quality` (review and QA),
141
+ and `extras` (optional Ponytail utilities and prompt-review). Selecting `quality` or `extras` automatically
142
+ includes `core`. The guided command is:
143
+
144
+ `core` contains the Lean operating loop and Bun tooling; `quality` adds review and QA skills; and
145
+ `extras` adds optional Ponytail utilities and prompt-review. `full` resolves all three catalog modules.
146
+ Invoke `$prompt-review` for instruction audits or requested simplification.
147
+
148
+ ```bash
149
+ npx workflow-toolkit install
150
+ ```
151
+
152
+ The target must be the current directory and the command must run in an interactive terminal.
153
+ The command never invokes Python. It previews add, update, adopt, preserve, replace, remove, and
154
+ no-change actions before asking for final confirmation.
155
+
156
+ Cancellation exits 0 with no target, adoption, journal, or backup changes. Invalid state, unsafe
157
+ paths, backup failures, and publication failures exit 1; non-interactive use exits 2 with the exact
158
+ TTY guidance.
159
+
160
+ Add capabilities later with another apply; installed layers are cumulative and omitted layers are
161
+ never removed. `--skip-agents` preserves both instruction files byte-for-byte and skips local-config
162
+ initialization and packet synchronization. Without it, adoption appends managed `core` and `quality`
163
+ blocks while preserving consumer prose. A differing
164
+ managed file or unowned destination is reported as a conflict and causes zero writes.
165
+
166
+ ### Recovery and conflict handling
167
+
168
+ For an existing project copied from an older workflow release, the wizard inspects current files and
169
+ the adoption manifest. It reports every conflict before writing. Choose `Back up and replace`,
170
+ `Exclude module`, or `Cancel installation`; excluding `core` also excludes dependent modules.
171
+
172
+ If the process stops after publication begins, the next run detects the transaction journal and
173
+ offers restoration from its verified backup before allowing a new installation.
174
+
175
+ ### Test resources
176
+
177
+ The Lean route uses one sequential builder. Consuming projects may serialize heavy commands that
178
+ share a browser, database, container runtime, or other declared resource.
179
+
180
+ Prerequisites: Node.js 18 or newer and an interactive terminal. Python is not an installer
181
+ prerequisite; unrelated Python workflow tools remain available after installation.
182
+
183
+ The preview is the review: inspect the complete action list and backup destination before confirming.
184
+
185
+ Feature workflow state follows the [artifact lifecycle](.agents/skills/wtk/references/artifacts.md) and
186
+ remains visible to Git. Adoption removes only the exact legacy `.specs/features/` ignore line,
187
+ including duplicates, preserves consumer-owned lines and comments, and never stages or commits files
188
+ from the transient feature tree.
189
+
190
+ The tracked `.wtk.toml.example` documents the complete v3 matrix and `mixed` profile. Each
191
+ checkout owns an ignored `.wtk.toml`, initialized from that example by adoption without
192
+ `--skip-agents` or by explicit sync;
193
+ it is the single editable source for all Claude, Codex, and Cursor model and effort choices. The
194
+ tracked `.agents/skills/wtk-config/assets/agents/` trees hold canonical instruction bodies, while sync generates the
195
+ ignored native runtime packets. Re-adoption preserves an existing local config byte-for-byte and
196
+ regenerates runtime packets from the templates and that config when `--skip-agents` is not used.
197
+ With `--skip-agents`, sync is an explicit later operator step.
198
+
199
+ ```bash
200
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
201
+ --root /path/to/target-project --sync-agents
202
+ ```
203
+
204
+ Edit the `[models.<provider>.<role>]` tables in the local `.wtk.toml`, then run the explicit
205
+ sync command. If the local file is missing, sync validates and copies
206
+ `.wtk.toml.example` first. It reports changed and unchanged runtime packet paths and is
207
+ idempotent. Native `model`, `effort`, and `model_reasoning_effort` fields are generated output; do
208
+ not edit runtime packets manually. Runtime edits are disposable; edit tracked templates when
209
+ changing instruction bodies.
210
+
211
+ The `cadence` controls the wtk-deep-review groups:
212
+
213
+ The default is `skip`: Deep Review runs only when the operator requests it or explicitly selects a
214
+ scheduled cadence.
215
+
216
+ - `slice`: one group per slice (`1, 2, 3, 4` → `[1] [2] [3] [4]`).
217
+ - `feature`: one group for the whole feature (`1, 2, 3, 4` → `[1, 2, 3, 4]`).
218
+ - `grouped.N`: consecutive, balanced groups with at most `N` slices (`grouped.3` with four
219
+ slices → `[1, 2] [3, 4]`).
220
+ - `skip`: no groups (`[]`); final QA, readiness, and merge do not wait for wtk-deep-review, and the
221
+ human runs `wtk-deep-review` later.
222
+
223
+ Post-cap remediation is bounded by `[remediation] stall_attempts`. It defaults to `3`; `0` means
224
+ unbounded. The threshold is read from the current local config on every attempt and is not stored
225
+ in the feature snapshot:
226
+
227
+ ```toml
228
+ [remediation]
229
+ stall_attempts = 3
230
+ ```
231
+
232
+ After each remediation attempt, the scoped gate produces a normalized, sorted failing-test
233
+ signature. A strictly smaller failing-test set resets the stall counter; an equal-size or larger
234
+ set increments it, including when membership changes. A reached nonzero threshold halts with the
235
+ signature, attempt count, and fixes tried. An unavailable gate halts immediately. The review cap
236
+ never opens a third wtk-deep-review round.
237
+
238
+ The resolver uses the native provider for every role unless a named profile or role override is
239
+ selected. Precedence is `CLI override > profile > native provider`:
240
+
241
+ When a feature has `tasks.md`, the resolver validates its vertical-slice closure table and derives
242
+ the slice count from merge-alone outcomes. A feature without `tasks.md` uses one slice. `--slices`
243
+ is an optional assertion against that derived count during initial resolution or refresh; it is not
244
+ the source of truth.
245
+
246
+ ```bash
247
+ # Native route: all roles use Codex.
248
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
249
+ --root /path/to/target-project --feature register-user-native \
250
+ --native-provider codex
251
+
252
+ # Named profile: use the [profiles.mixed] routes from .wtk.toml.
253
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
254
+ --root /path/to/target-project --feature register-user-profile \
255
+ --native-provider codex --profile mixed
256
+
257
+ # Role overrides win over both the selected profile and the native provider.
258
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
259
+ --root /path/to/target-project --feature register-user-override \
260
+ --native-provider codex --profile mixed \
261
+ --override deep_reviewer=cursor --override verifier=claude
262
+ ```
263
+
264
+ The first resolution freezes the effective route and cadence in
265
+ `.specs/features/<feature>/workflow.json`, including model and effort for every delegated role.
266
+ Planner is synchronized but remains the top-level session, not a delegated snapshot role. On
267
+ resume, the snapshot is authoritative and packet metadata must still match its frozen model and
268
+ effort. If it differs, synchronize packets and explicitly refresh; ordinary resume will fail:
269
+
270
+ ```bash
271
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
272
+ --root /path/to/target-project --feature register-user-refresh \
273
+ --native-provider codex --refresh
274
+ ```
275
+
276
+ The complete contract is in the
277
+ [wtk-config skill](.agents/skills/wtk-config/SKILL.md).
278
+
279
+ ## Update an adopted project
280
+
281
+ Start from a clean tree and a dedicated update branch. Read the changelog since the version the
282
+ project adopted, then run the guided installer and inspect the complete diff before committing:
283
+
284
+ ```bash
285
+ cd /path/to/target-project
286
+ git status --short
287
+ git switch -c build/update-wtk
288
+ npx workflow-toolkit install
289
+ git diff
290
+ ```
291
+
292
+ Run `npx workflow-toolkit install` for every installation or update. It updates pristine
293
+ workflow-owned files, promotes provider templates using recorded source hashes, refreshes managed
294
+ instruction blocks and runtime packets, and stops with all conflicts before writing.
295
+
296
+ Adoption preserves product context, local config, package metadata, existing knowledge, and unknown
297
+ consumer files. A fresh target receives managed generic knowledge instructions plus neutral,
298
+ consumer-owned wiki indexes and log. Source concepts and dated raw observations never cross the
299
+ repository boundary. Retired workflow files are removed only when their managed hashes prove they
300
+ are pristine; edited or unproven paths conflict with zero writes.
301
+
302
+ Each release lists its upgrade steps under `### Migration` in the changelog; follow them in order
303
+ after installation. The package identity for this release is `workflow-toolkit@1.0.1` with the `wtk` executable.
304
+
305
+ ## Managed paths
306
+
307
+ Review the managed paths and the installer's per-file actions. Installation updates only workflow-owned files,
308
+ preserves unknown consumer files, creates `.wtk.toml.example` and skill-owned runtime, and records ownership in `.my-workflow/adoption.json`. It never removes an
309
+ installed layer or consumer file. Product documentation, `.specs/`, `package.json`, `bun.lock`, an
310
+ existing local `.wtk.toml`, and an existing `docs/qa/README.md` remain consumer-owned.
311
+
312
+ The local config is the source for generated provider packets. Installation preserves an existing
313
+ `.wtk.toml` and installs tracked templates when missing. The guided command synchronizes and
314
+ regenerates the ignored `.claude/agents/`,
315
+ `.codex/agents/`, and `.cursor/agents/` packets from the templates and config. Edit the config or
316
+ tracked templates, not generated runtime packets.
317
+
318
+ ## Troubleshooting
319
+
320
+ **`conflict` during installation.** Review every listed path. Restore an owned file to its recorded
321
+ hash or resolve an unowned collision, then run the guided command again. Installation is all-preflight:
322
+ no selected file or manifest is written while any conflict remains.
323
+
324
+ **`refusing adoption: Makefile:N uses machine-global workflow skill path`** Point the target's gate at
325
+ the vendored `.agents/skills/wtk-config/scripts/...` path.
326
+
327
+ **Claude skill symlinks point nowhere.** Re-run `npx workflow-toolkit install`; it recreates the `.claude/skills/`
328
+ links into `.agents/skills/`.
329
+
330
+ **A runtime packet has the wrong model or effort.** Edit the local `.wtk.toml`, then run
331
+ `npx workflow-toolkit install`. Runtime packets are generated output.
332
+
333
+ ## Repository intelligence
334
+
335
+ The workflow stays stack- and tool-agnostic while using provider-neutral repository-intelligence defaults.
336
+ Graphify and Graft are the standard, checkout-local development tools for repository intelligence.
337
+ They never enter application runtime dependencies, and specs plus current checkout source remain
338
+ authoritative.
339
+
340
+ Use the smallest route that answers the question:
341
+
342
+ - Existing file, symbol, API, caller, and callee pointers: skip retrieval.
343
+ - Architectural trigger (boundary, responsibility transfer, shared abstraction, central flow, or
344
+ unresolved architectural risk): query Graphify first, then use Graft for implementation pointers.
345
+ - Unknown code location or call relationship: query Graft before broad native search.
346
+ - Exact-text question: use exact native search.
347
+
348
+ Tool output stays bounded. Missing, wrong-version, stale, failed, partial, or insufficient output
349
+ produces one explicit degraded reason for the phase, then targeted native inspection. Degraded
350
+ inspection is a fallback, not normal routing.
351
+
352
+ Adoption reports these exact development-tool remediation commands without executing them or changing
353
+ application dependencies:
354
+
355
+ ```bash
356
+ npm install --save-dev --save-exact @nanonets/graft@0.10.1
357
+ uv tool install graphifyy==0.9.14
358
+ python3 .agents/skills/wtk-config/scripts/repository_intelligence.py \
359
+ graphify-setup --root . --backend <backend> --mode deep
360
+ ```
361
+
362
+ Graphify semantic extraction requires an explicit backend and discloses its source scope before
363
+ extraction. Each query refreshes or rejects state using the active checkout and working-tree
364
+ fingerprint. Generated graphs, caches, backend metadata, and benchmark scratch records remain ignored
365
+ under `graft/`, `graphify-out/`, and `.repository-intelligence/`.
366
+
367
+ The directional retention pilot records one controlled terminal task per JSONL record, including task
368
+ category, configuration (`baseline`, `graft`, or `routed`), snapshot and prompt controls, provider,
369
+ model, effort, token metrics, repository-intelligence/native-search calls, files read, wall-clock time,
370
+ gate, Verifier, findings, rework, and outcome. Compare the same controls within each category after
371
+ 10–20 terminal tasks. A promoted report is directional, not statistically conclusive; removing or
372
+ changing routing requires a later explicit project decision.
373
+
374
+ ## Optional integrations
375
+
376
+ **OpenDesign** remains an optional visual capability. The repository stores only the approved handoff;
377
+ absence or failure falls back to normal repository artifacts. It is separate from standard Graphify
378
+ and Graft routing. No integration is mandatory or installed by adoption for visual iteration.
379
+
380
+ The installer merges workflow-owned ignore entries, copies missing example/templates, generates
381
+ local runtime packets, and records per-file ownership in `.my-workflow/adoption.json`. It preserves
382
+ consumer prose through managed blocks, never removes an installed layer, and leaves package
383
+ metadata, local config, and unknown files untouched. Always review the plan and resulting diff
384
+ before accepting managed-path updates.
385
+ Adoption itself does not install external security skills. It prints the exact command for the
386
+ separate authorized step and leaves the security gate uncovered until that command succeeds.
387
+
388
+ ## Skills
389
+
390
+ Canonical copies live in `.agents/skills/`. Claude Code gets symlinks in `.claude/skills/`. Cursor,
391
+ Codex and OpenCode consume `.agents`. Do not add `.cursor/skills` or other agent trees. The
392
+ project-owned `wtk-qa-plan` and `wtk-qa-execute` skills use the consuming project's profile in
393
+ `docs/qa/README.md`; they do not select a framework or replace the project's gate.
394
+
395
+ `npx workflow-toolkit install` installs and updates only the workflow-owned `wtk` router, its Lean
396
+ skills (`wtk-lean`, `wtk-discover`, `wtk-plan`, `wtk-implement`), Ponytail, Deep
397
+ Review, QA, wtk-config, and wtk-ship skills. Keep those canonical copies in
398
+ `.agents/skills/` and the Claude Code
399
+ symlinks in `.claude/skills/`. The four external security skills are a separate authorized step:
400
+
401
+ ```bash
402
+ python3 /path/to/workflow-toolkit/scripts/install_security_skills.py \
403
+ /path/to/target-project --yes
404
+ ```
405
+
406
+ The installer uses only the reviewed refs and hashes in `skills-lock.json`; it does not resolve
407
+ `latest` or perform automatic updates. Review its printed plan and authorize the command before
408
+ running it. Until it succeeds, do not treat the security gate as covered.
409
+
410
+ `wtk-ship` is vendored here. `CLAUDE.md` is the one line `@AGENTS.md` (not a symlink). Canonical
411
+ packet templates live under `.agents/skills/wtk-config/assets/agents/{cursor,claude,codex}/`; generated implementer,
412
+ explorer and verifier runtimes live under the ignored `.cursor/agents/`, `.claude/agents/` and
413
+ `.codex/agents/` directories.
414
+
415
+ ## Knowledge checker
416
+
417
+ These are optional source-pack maintainer checks, not adoption or consumer task gates.
418
+
419
+ ```bash
420
+ bun install --frozen-lockfile
421
+ bun run test:all
422
+ bun run knowledge
423
+ ```
424
+
425
+ The consuming project's full gate should not include this checker. Run it when writing to the
426
+ bundle.
427
+
428
+ ## Out of scope
429
+
430
+ Product domains, product-owned documentation, architecture, infrastructure, and framework choices
431
+ belong to the consuming project. This pack is stack-agnostic on purpose and does not prescribe a
432
+ browser, API, CLI, mobile, or manual QA runner.
433
+
434
+ ## Deliberately not included
435
+
436
+ - Any product, domain, architecture, or design *concepts* from a source project's wiki
437
+ - Dated `knowledge/raw/` observations
438
+ - Library and stack skills
439
+ - A product skeleton, Makefile, port scheme, or worktree-slot arithmetic
440
+ - Retired orchestration history