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,75 @@
1
+ # Branch Naming
2
+
3
+ **Read when:** creating a branch or a worktree.
4
+
5
+ **Why this exists:** A branch named for the implementation (`add-users-table`) or for a checkout
6
+ slot hides what the user gets. Work on `main`, leftover merged branches, and two checkouts sharing
7
+ a runtime are how a gate silently verifies the wrong tree.
8
+
9
+ ## Shape
10
+
11
+ ```
12
+ <type>/<slug>
13
+ ```
14
+
15
+ `<type>` is the Conventional Commits type the branch's work will mostly carry. `<slug>` is 2–5
16
+ kebab-case words naming the behaviour, not the implementation.
17
+
18
+ ```
19
+ feat/account-onboarding
20
+ fix/duplicate-submission
21
+ docs/guidelines-rebuild
22
+ refactor/repository-boundaries
23
+ ```
24
+
25
+ ## Types
26
+
27
+ | Type | For |
28
+ | --- | --- |
29
+ | `feat` | New user-visible behaviour |
30
+ | `fix` | A defect in behaviour that already shipped |
31
+ | `refactor` | Structure changes, no behaviour change |
32
+ | `perf` | Behaviour unchanged, measurably faster |
33
+ | `docs` | Documentation and guidelines only |
34
+ | `test` | Test-only work — rare, since tests ship with their behaviour |
35
+ | `build` | Tooling, dependencies, CI |
36
+ | `chore` | Nothing. Do not use it — name the real type |
37
+
38
+ ## Rules
39
+
40
+ 1. **The slug names the behaviour.** `feat/account-onboarding`, not `feat/add-users-table`. A reader
41
+ should know what the user gets, not what the diff touches.
42
+ 2. **One branch, one feature.** The branch matches the `.specs/features/<slug>/` directory name when
43
+ the feature has one. Same slug on both sides — no translation step.
44
+ 3. **Never work on `main`.** Never push to it, never force-push anywhere, never merge without an
45
+ explicit instruction.
46
+ 4. **Worktree branches are named for their work, not their checkout.** The branch name says what is
47
+ being built.
48
+ 5. **No personal namespace.** New branches do not use `username/` prefixes.
49
+ 6. **Delete after merge.** After a PR merges, confirm the merge and a clean tracked worktree, then
50
+ remove every worktree the agent created for that feature or task. Inspect ignored residue before
51
+ using force removal. Keep the primary, active, and unmerged worktrees untouched.
52
+
53
+ ## Backups
54
+
55
+ A branch created only to preserve state before a risky rebase is prefixed `backup/` and names what it
56
+ protects plus why:
57
+
58
+ ```
59
+ backup/account-onboarding-pre-rebase
60
+ ```
61
+
62
+ These are disposable. Delete them once the operation they protected has succeeded and been verified —
63
+ an accumulated wall of `backup/` branches hides the one that still matters.
64
+
65
+ ## Isolated checkouts
66
+
67
+ If the consuming project isolates checkouts, each checkout owns its runtime. Never share a branch
68
+ between two checkouts. Two checkouts of one branch is how a gate in one silently verifies the other's
69
+ tree.
70
+
71
+ Never set `reuseExistingServer: true` across siblings.
72
+
73
+ A gate refusing because a runtime is already bound is isolation working. Identify the owner before
74
+ touching anything (`lsof` / process list). Another checkout of this repository: stop it there.
75
+ Another project entirely: leave it alone and move this checkout instead.
@@ -0,0 +1,76 @@
1
+ # Test Contract
2
+
3
+ **Read when:** writing or planning any test, or deriving feature checks.
4
+
5
+ **Why this exists:** "All branches covered" cannot be audited. Named cases with claims and proofs can.
6
+ A test that mirrors the implementation, or exists only to raise coverage, proves nothing.
7
+
8
+ ## The artifact
9
+
10
+ Every integrated Lean feature has `.specs/features/<feature>/checks.md`. The native
11
+ [Lean checks reference](../../wtk-lean/references/checks.md) is the only schema and
12
+ authoring source for that artifact: read it for `Profile`, check and proof syntax, `Coverage`,
13
+ `Test policy`, `Swept`, and `Handoff`. This guideline supplies local test-case policy below; it does
14
+ not define a second checks schema.
15
+
16
+ The native profile owns mutation depth: `standard` and `ui` inject faults; `light` does not. Do not
17
+ infer a local mutation threshold from this guideline.
18
+
19
+ ## Rules
20
+
21
+ 1. **Derive, do not invent.** Every case maps to a spec acceptance criterion. Use components, error
22
+ paths, boundaries, and journeys to find coverage gaps; if one reveals behavior absent from the
23
+ spec, clarify the acceptance criterion before adding a case. Never create a case solely because a
24
+ component or boundary exists. Security cases also follow `docs/toolkit/guidelines/SECURITY.md` when its
25
+ condition fires.
26
+ 2. **Every claim names an exact input, condition, concrete value, and expected result.** "Test the
27
+ happy path" is not a claim. "`POST` the create route with an unknown region returns 422 and no
28
+ row" is. Name one or more exact tests or commands whose exit codes settle it; repeat `Proof:` when
29
+ a proof cannot settle the whole claim.
30
+ 3. **Coverage is explicit.** Every enumerated set gets a `Coverage` row with each member as its own
31
+ token beside the check or proof that asserts it. Shared or table-driven proofs may be reused when
32
+ each named claim or member is independently asserted; reuse never replaces the explicit join.
33
+ 4. **Audit before the build is approved.** Every claim and coverage member maps to at least one check
34
+ with named proof(s); no claim or member is left orphaned.
35
+ 5. **Tests ship with the slice that closes the behaviour.** Never a test-only slice.
36
+ 6. **A case is not done because a test exists.** It is done when the test asserts the contracted
37
+ expected result. A test that exists without asserting the contracted behaviour is a hollow case and
38
+ fails review.
39
+
40
+ ## Choosing the layer
41
+
42
+ Pick the cheapest layer that can discriminate the behaviour.
43
+
44
+ | Layer | Use for | Cost |
45
+ | --- | --- | --- |
46
+ | Unit | Domain rules, validation, pure transformation, every error path | Cheapest |
47
+ | Integration | Anything crossing a boundary: repository, HTTP handler, queue | Moderate |
48
+ | End-to-end | A complete user journey through the real stack | Most expensive — deliberately scarce |
49
+
50
+ **e2e is a last resort, not a coverage tool.** If an integration test can discriminate the failure,
51
+ the e2e case is redundant.
52
+
53
+ Permanent e2e specs carry `@feature:<slug>` and `@journey:<slug>` tags, unique data with `finally`
54
+ cleanup, and residue-zero assertions. The `@feature:<slug>` tag is the selector the consuming
55
+ project's browser scoped gate uses to run only that feature's scenarios.
56
+
57
+ ## Never add a test just to raise coverage
58
+
59
+ Before adding a test, name three things: the invariant it protects, the layer that owns it, and the
60
+ canonical suite it belongs to. Extend that suite. If no invariant exists, do not write the test.
61
+
62
+ Forbidden by default — allowed only when that artifact is the product contract and no stronger gate
63
+ already owns it:
64
+
65
+ - Tests asserting prose, copy or documentation content
66
+ - Snapshot tests standing in for behavioural assertions
67
+ - Tests over generated files, config shape, or CSS
68
+ - A second suite duplicating an existing one because the existing one was hard to find
69
+
70
+ ## Visual acceptance evidence
71
+
72
+ When a visual acceptance criterion names an approved reference, attach paired-capture evidence to the
73
+ owning check or slice and point to its feature `uiux.md` row when present. Follow the method in
74
+ `docs/toolkit/guidelines/UI-UX.md#verifying-the-built-screen` and record its output fields. A manual paired
75
+ comparison is evidence, not an automated test, and never replaces behavioral cases. Add automated
76
+ screenshot regression only when an actual visual invariant has an owning canonical suite.
@@ -0,0 +1,127 @@
1
+ # Gates
2
+
3
+ **Read when:** selecting validation for the requested change.
4
+
5
+ The consuming project owns commands: `make check`, when present, is the full gate; a documented
6
+ selector is the scoped gate. Select validation by causal impact since the last valid evidence for
7
+ each proof or suite, not by file count, task label, commit identity or elapsed time.
8
+
9
+ ## Scope and completion
10
+
11
+ | Change | Validation |
12
+ | --- | --- |
13
+ | Documentation maintenance | Accuracy, affected links/headings and whitespace |
14
+ | Bounded agent-instruction change | Consistency and an existing relevant contract check |
15
+ | Instruction-only skill plus existing installer registration | Metadata/links and the existing package or adoption check for that registration |
16
+ | Direct behavior-preserving correction | Narrowest canonical check covering the affected behavior |
17
+ | Mixed documentation and executable change | Canonical tests for the changed executable behavior |
18
+ | Feature slice | Named proofs and the scoped gate |
19
+ | Closing a task with a browser surface | The consuming project's browser scoped gate, filtered by `@feature:<slug>` |
20
+ | Feature close | Fresh full-feature Verifier and the selected local/full gates |
21
+
22
+ Bounded corrections do not start a feature plan, Verifier, deep review or QA cycle. A missing UI
23
+ selector is reported after the narrowest applicable check, not promoted to full e2e. Escalate only
24
+ when evidence identifies a changed contract, shared behavior or risk outside that check's scope.
25
+ `wtk` owns routing; `.agents/skills/wtk/references/evidence.md` owns the completion claim.
26
+
27
+ Creating a skill from decided instructions, registering it in an existing catalog, or correcting
28
+ CLI copy is bounded maintenance when it adds no executable skill helper, dependency, hook, expanded
29
+ tool authority, data contract, new user interaction or unresolved product decision. The active agent completes it directly.
30
+ Use the relevant existing checks once; no mandatory delegation, new plan/checks, fault injection,
31
+ Verifier, QA charters or full-suite run. An optional forward probe needs a concrete uncertainty.
32
+
33
+ Delivery does not reclassify a bounded change. For a previously verified feature, retain its receipt
34
+ and validate the subsequent diff at its own scope; do not reopen the whole branch or recreate closed
35
+ artifacts. Escalation names the changed invariant and why the selected check cannot cover it.
36
+ Unrelated findings become follow-ups unless they prevent the requested behavior or compromise a
37
+ relevant security boundary. Do not grow a maintenance task into a repository certification.
38
+
39
+ Feature verification still accounts for every approved check, using fresh or demonstrably reusable
40
+ evidence. Feature close, review remediation and delivery do not automatically require a full gate.
41
+ Full gates follow the impact conditions below, including at initial feature close.
42
+
43
+ For reference-driven UI, include the comparison required by `docs/toolkit/guidelines/UI-UX.md`. QA flags and journeys follow
44
+ `docs/toolkit/guidelines/QA-SCENARIOS.md`; scenario tags scope walks, not automated tests.
45
+
46
+ ## Run and reuse evidence
47
+
48
+ Before selecting or repeating tests, compare current inputs with each proof's last green baseline.
49
+ Different suites may have different valid baselines. Trace changed files through imports and direct
50
+ dependents, then relevant transitive consumers, affected invariants and journeys that use that path.
51
+ Include shared fixtures, generated code, dynamic loading, configuration, dependency/lockfile changes,
52
+ runtime and shared resource dependencies. Use existing selectors/tools or scoped manual tracing;
53
+ missing graph tooling alone does not require building a graph or running the full suite.
54
+
55
+ Select the corrected finding's regression, the owning module's canonical suite and affected consumer
56
+ coverage. Deduplicate overlapping commands; one canonical invocation may cover several obligations.
57
+ Declare the causal path or coverage reason for each selected command, not a separate ritual per test.
58
+
59
+ Reuse prior results only when tested code, relevant transitive dependencies, fixtures, configuration,
60
+ resolved dependency versions, command/selector and runtime inputs remain equivalent. Independently
61
+ inspect recorded evidence and its inputs; an author's unsupported PASS is insufficient. Documentation,
62
+ reports, evidence files, commits and branch names do not invalidate unrelated tests, but documents
63
+ consumed as test inputs do. Keep existing cache invalidation rules: the current `gate_cache.py` keys
64
+ the whole tree and does not implement impact-aware reuse. A cache miss is not a demand for a full gate.
65
+ A cache hit still needs the runtime/input-equivalence checks above; otherwise run the selected
66
+ command directly instead of treating that hit as valid evidence.
67
+
68
+ After merging or rebasing main, examine the incoming delta as well as resolved conflicts, overlapping
69
+ files and newly connected paths; disjoint files can still interact. Reuse unaffected evidence.
70
+ A review finding invalidates evidence on its causal path, not every previously approved module.
71
+
72
+ For example, a Members typography fix and a Dashboard mobile-card fix receive their own coverage.
73
+ If only Dashboard needs another correction, rerun its affected checks and retain Members evidence.
74
+ A shared style or layout primitive expands coverage to the consumers actually affected.
75
+
76
+ ## Full-gate conditions and failures
77
+
78
+ Run a full gate when the human explicitly requests it or when a conservatively bounded impact scope
79
+ cannot cover the change. Examples include shared infrastructure/runtime configuration, dependency
80
+ changes or global primitives whose affected consumers cannot be covered by the selected boundaries.
81
+ Inspect the actual lockfile/package delta first; merely touching a shared file does not prove global
82
+ impact. Name the uncertainty or missing coverage rather than treating an incomplete global graph as
83
+ automatic escalation.
84
+
85
+ If a full run fails in an apparently unrelated test, rerun that test or the smallest relevant cohort
86
+ to investigate order, isolation, resources and harness state. An isolated pass alone does not prove
87
+ a flake or lack of causality. Preserve the failed full-run result, distinguish suspected instability
88
+ from demonstrated flakiness, and record unresolved limits. Do not repeat the full gate automatically,
89
+ or report it as green because targeted retests passed. Fixes reselect coverage from their own delta.
90
+
91
+ ## Selection and evidence record
92
+
93
+ Before a meaningful validation batch, state the delta, reusable evidence and unchanged inputs,
94
+ invalidated tests with their causal edges, and the minimal selected commands. A trivial edit can use
95
+ one sentence. No new report file or approval step is required.
96
+ At completion, record command, `file -> dependency/boundary -> test`, result, reused evidence/baseline
97
+ and real limitations in the existing handoff/report. Every affected invariant needs a green proof
98
+ or an explicit unresolved limitation; every selected command needs an impact or coverage justification.
99
+
100
+ Canonical cache invocation: `python3 tools/gate_cache.py run --gate <scoped|full> -- <gate command>`.
101
+
102
+ Explicit user skips remain a narrow claim with the limitation recorded. Never weaken, skip or delete
103
+ a test to obtain a pass, or describe a failed/unrun gate as passing. Knowledge checks run with bundle
104
+ writes, not as an added feature-delivery gate; dependency inventories are not vulnerability proofs.
105
+
106
+ ## Credential-free declarative agent-tool configuration
107
+
108
+ This route applies only when the whole diff contains agent/server names, public URLs and non-secret
109
+ options. Commands, hooks, plugins, dependencies, credentials, OAuth/scopes, permissions, runtime code,
110
+ CI/deploy changes and external mutations follow their applicable normal route.
111
+
112
+ The active agent edits directly and makes one atomic commit, without feature artifacts, delegation,
113
+ Verifier, deep review or QA. Before committing:
114
+
115
+ 1. Parse changed files and compare intended names, URLs, keys and values with the client schema.
116
+ 2. Check for credential material.
117
+ 3. Query the relevant installed clients read-only, returning only `name`, `url`, `enabled` and `auth_status`.
118
+ 4. Run `git diff --check` and the project's commit-message validator.
119
+
120
+ OAuth requires explicit human authorization. Credentials, OAuth clients/scopes, permissions,
121
+ authentication behavior and sensitive product data require full Verifier coverage.
122
+
123
+ ## Runtime isolation
124
+
125
+ Each checkout owns its runtime. Never use `reuseExistingServer: true` across siblings. Resolve a port
126
+ collision with a checkout-owned runtime; do not stop another checkout's server merely to run a gate.
127
+ Avoid concurrent full gates that compete for the same host resources.
@@ -0,0 +1,102 @@
1
+ ---
2
+ name: wtk-config
3
+ description: Configure Workflow Toolkit providers, models, effort, review cadence, and feature routes; use for settings or packet sync, not gates, QA policy, or planning depth.
4
+ ---
5
+
6
+ # Workflow Configuration
7
+
8
+ Synchronize native packet metadata explicitly, then resolve the feature workflow once and let the
9
+ orchestrator dispatch the frozen route.
10
+
11
+ ## Synchronize agent metadata
12
+
13
+ `.wtk.toml` is the checkout-local single editable source for every Claude, Codex, and Cursor
14
+ model and effort across planner, implementer, verifier, explorer, and deep reviewer. The tracked
15
+ `.wtk.toml.example` initializes it, and tracked `.agents/skills/wtk-config/assets/agents/` bodies are the source
16
+ for ignored generated runtime packets. Native packet fields are generated output; edit templates
17
+ for instruction changes.
18
+
19
+ Run:
20
+
21
+ ```bash
22
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
23
+ --root . --sync-agents
24
+ ```
25
+
26
+ The command validates the complete matrix and every template before writing, initializes a missing
27
+ local config from the example, reports `changed` and `unchanged` runtime paths, and is idempotent.
28
+ Adoption runs it after installing the missing example and skill-owned packet assets.
29
+
30
+ ## Remediation stall bound
31
+
32
+ The optional `[remediation]` table has one key, `stall_attempts`: the number of consecutive
33
+ post-cap remediation attempts that fail to establish a new minimum of failing-test identifiers.
34
+ It must be an integer of at least `0`, defaults to `3`, and `0` means unbounded. The resolver
35
+ includes the effective value in its current JSON output but never writes it to `workflow.json`.
36
+ This lets an operator tune the bound between attempts without refreshing the frozen route.
37
+
38
+ ## First resolution
39
+
40
+ Run the bundled `mutating` resolver from the consuming project root. For a Lean feature, it reads
41
+ the slice headings from `checks.md` before writing the feature-local
42
+ `workflow.json` snapshot atomically:
43
+
44
+ ```bash
45
+ python3 .agents/skills/wtk-config/scripts/workflow_config.py \
46
+ --root . --feature <feature-slug> \
47
+ --native-provider <claude|codex|cursor> [--profile <name>] \
48
+ [--override <role>=<provider>]...
49
+ ```
50
+
51
+ With no `checks.md`, the resolver uses one slice. `--slices <expected-count>` remains an optional
52
+ assertion for initial resolution and refresh; it never owns the count. Normal resume returns the
53
+ frozen snapshot without reading feature planning prose.
54
+
55
+ Treat the snapshot as the persisted route and cadence; cadence defaults to `skip`, so Deep Review is
56
+ on demand unless the operator selects `slice`, `feature`, or `grouped.N`. The current JSON output additionally reports
57
+ the live remediation threshold. Cadence `skip` freezes `groups: []`: the route has no wtk-deep-review
58
+ stage and nothing downstream waits for one; the human runs `wtk-deep-review` later. The resolver owns config parsing, validation, balanced groups, role
59
+ precedence, agent-file lookup, and atomic persistence. Keep those rules in the resolver instead of
60
+ restating them here.
61
+
62
+ Done when: the snapshot exists, contains sequential scheduling, cadence, role routes, and frozen delegated
63
+ model/effort, the current output reports `remediation.stall_attempts`, and the capable orchestrator
64
+ has accepted every selected provider.
65
+
66
+ ## Resume
67
+
68
+ Read the existing feature snapshot before dispatch. Use its `parallelization`, `deep_review`, `roles`, and `git_head`
69
+ values even when `.wtk.toml` has changed. Re-read the current `[remediation]` threshold on
70
+ every resume; it is deliberately live. Current packet metadata must match each frozen delegated
71
+ model and effort; otherwise synchronize and explicitly refresh. Do not silently re-resolve an active
72
+ feature.
73
+
74
+ Done when: resumed dispatch uses the snapshot's effective route and cadence, reports the current
75
+ remediation threshold, and records no new resolution.
76
+
77
+ ## Refresh
78
+
79
+ Run the same command with `--refresh` only when the human explicitly requests a new resolution.
80
+ Review the resulting snapshot before dispatch because refresh may change review groups or providers.
81
+
82
+ Done when: the refreshed snapshot is valid and the orchestrator dispatches only its effective route.
83
+
84
+ ## Provider availability
85
+
86
+ Check that the selected orchestrator can execute each provider named in `roles`. Halt with the
87
+ provider and role named when a route is unavailable. Keep provider agent definitions complete and
88
+ separate; use the `agent_file` selected by the resolver without merging definitions or silently
89
+ falling back to another provider.
90
+
91
+ Done when: every dispatched role has an available provider and its existing agent file.
92
+
93
+ ## Failure recovery
94
+
95
+ Read the resolver's stderr and correct the named input before retrying:
96
+
97
+ - Parse or validation failure: fix the local config, example/template source, or CLI argument and rerun.
98
+ - Provider failure: make the named provider and role agent available; use no fallback.
99
+ - Snapshot write failure: restore write access to the feature state directory and rerun; atomic
100
+ replacement preserves the prior valid snapshot.
101
+
102
+ Done when: the resolver exits 0 and the snapshot contains the requested effective route.
@@ -0,0 +1,40 @@
1
+ ---
2
+ name: deep-reviewer
3
+ description: >-
4
+ Fresh read-only Deep Review job runner. Executes one materialized job on the integrated tree and writes its output artifact.
5
+ model: sonnet
6
+ effort: high
7
+ tools: Read, Grep, Glob, Bash
8
+ disallowedTools: Skill
9
+ ---
10
+
11
+ You are the **deep-reviewer**. Receive a fresh role packet, exclude author and operator context,
12
+ and execute exactly one materialized Deep Review job.
13
+
14
+ ## Packet (this only)
15
+
16
+ - The job prompt file and output path it names.
17
+ - Repository files needed by that prompt, read-only.
18
+ - The spec, diff, tests, and assigned evidence named by the job prompt.
19
+
20
+ ## Rules
21
+
22
+ - This is a fresh reviewer identity, distinct from every Implementer and Verifier in the feature.
23
+ - Review the integrated commit range on the clean integration checkout, never a private writer tree.
24
+ - Read the complete prompt and follow its schema and lane assignment exactly.
25
+ - Do not load the Implementer's transcript or operator handoff.
26
+ - Review only assigned hunks and rules.
27
+ - Derive conclusions from the spec, diff, tests, and assigned evidence.
28
+ - Write exactly one output artifact at the path named by the job prompt.
29
+ - Do not edit source, tests, or configuration. Do not commit, push, or publish.
30
+
31
+ ## Repository intelligence
32
+
33
+ - Consume prepared bounded Graft code context and the single prepared Graphify context only when the job records an architectural trigger.
34
+ - Verify every pointer and architectural claim against the frozen checkout; never duplicate retrieval or treat generated context as authoritative.
35
+ - Report findings through the prompt's schema, then acknowledge the artifact.
36
+
37
+ ## Product context
38
+
39
+ Read `docs/product/AGENT-CONTEXT.md` before work. Follow its role/task route, load only cited paths
40
+ or headings, and name missing required context as a gap.
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: designer
3
+ description: >-
4
+ UI and UX designer. Produce mockups and review notes for UI-bearing features. Does not implement product code.
5
+ model: inherit
6
+ effort: high
7
+ skills: [wtk-plan, ponytail]
8
+ ---
9
+
10
+ You are the **designer**. Produce mockups and review notes for UI-bearing features. Never write product code.
11
+
12
+ ## Load
13
+
14
+ - Skill `wtk-plan`
15
+ - approved `plan.md` and `checks.md` (or the explicitly named modular source) for this feature
16
+ - `docs/toolkit/guidelines/UI-UX.md`
17
+ - `docs/toolkit/guidelines/FRONTEND.md`
18
+ - Selected references from `docs/product/AGENT-CONTEXT.md`
19
+ - Affected existing components, read-only, and only the relevant design headings
20
+
21
+ ## Do not load
22
+
23
+ Skill `wtk-implement`, unrelated product/history directories, test suites, or the whole source tree.
24
+
25
+ ## Procedure
26
+
27
+ State constraints first. If an approved source/frame or frozen HTML export exists, treat its `uiux.md`
28
+ reference rows as the visual authority, render the export with its fonts/assets, and preserve values
29
+ while adapting ownership and behavior. For a genuinely new screen or meaningful redesign without an
30
+ approved reference, show three distinct directions; use a fourth only for a named additional tradeoff.
31
+ For open design, subtract redundant UI without harming accessibility. Use one exploration pass and one refinement by default only for open design, then name remaining design choices. No new showcase, preview,
32
+ design tool, or split frontend/backend delivery is mandatory.
33
+
34
+ ## Deliver
35
+
36
+ - Mockups under `docs/design/<feature>/`
37
+ - `.specs/features/<feature>/uiux-review.md`
38
+
39
+ Never write product code.
40
+
41
+ ## Repository intelligence
42
+
43
+ - For a named module/domain boundary, responsibility transfer, shared abstraction, central flow, or unresolved architectural risk, query fresh Graphify before freezing design context.
44
+ - Do not duplicate code discovery; use returned architectural pointers and let Explorer route unknown implementation locations to Graft.
45
+
46
+ ## Product context
47
+
48
+ Read `docs/product/AGENT-CONTEXT.md` before work. Follow its role/task route, load only cited paths
49
+ or headings, and name missing required context as a gap.
50
+
51
+ ## Report
52
+
53
+ ```
54
+ Design complete:
55
+ - Mockups: [list files under docs/design/<feature>/]
56
+ - Review: .specs/features/<feature>/uiux-review.md
57
+ ```
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: explorer
3
+ description: >-
4
+ Read-only codebase exploration. Use when the planner or another agent needs to
5
+ find files, trace a flow, or answer where/how something works — spawn this
6
+ agent by name `explorer`, do not search in the parent chat.
7
+ model: sonnet
8
+ effort: medium
9
+ tools: Read, Grep, Glob, Bash
10
+ disallowedTools: Skill
11
+ ---
12
+
13
+ You are the **explorer**. Search and read. Do not edit, commit, or run mutating gates.
14
+
15
+ ## Load
16
+
17
+ Only what the question names: the file or heading in dispute. Skill `ponytail` at `full` when
18
+ choosing which path to open. Not the implementer's procedure, not all of `STATE.md`.
19
+
20
+ ## Rules
21
+
22
+ - Answer with paths and a short trace. No speculative refactors.
23
+ - If the next step is an edit, stop and hand back to the planner.
24
+
25
+ ## Repository intelligence
26
+
27
+ - For an assigned architectural trace, query fresh checkout-local Graphify first, then query Graft for exact implementation files, symbols, callers, and blast radius.
28
+ - For code-only discovery, query Graft before broad `rg`, glob, find, or read. If either result is missing, stale, partial, or insufficient, report one degraded reason and inspect targeted paths only.
29
+
30
+ ## Report
31
+
32
+ ```
33
+ Found:
34
+ - [path:line] — [what it does]
35
+ Next: [planner | implementer | none]
36
+ ```
37
+
38
+ ## Product context
39
+
40
+ Read `docs/product/AGENT-CONTEXT.md` before work. Follow its role/task route, load only cited paths
41
+ or headings, and name missing required context as a gap.
@@ -0,0 +1,57 @@
1
+ ---
2
+ name: implementer
3
+ description: >-
4
+ Slice Execute: implement, gate, atomic commit for one assigned slice. Use after the planner has approved Lean checks.
5
+ model: opus
6
+ effort: medium
7
+ skills: [ponytail]
8
+ disallowedTools: Skill
9
+ ---
10
+
11
+ You are the **implementer**. You receive a slice packet. Implement → scoped gate → atomic
12
+ commit per coherent slice. Return hashes and deviations. Do not verify your own work.
13
+
14
+ ## Packet (this only)
15
+
16
+ - The approved feature `plan.md` and `checks.md`; for an explicitly modular entry, its
17
+ `.design/`, `.tasks/`, and `.checks/` source artifacts and cited criteria
18
+ - The TEST-CONTRACT layer you will write
19
+ - `docs/toolkit/guidelines/UI-UX.md` and the pointed feature `uiux.md` row or bounded inline record when the task names a visual reference
20
+ - `docs/toolkit/guidelines/SECURITY.md` if the task touches runtime, schema, auth, or public behaviour
21
+ - Workflow memory if this is a multi-task feature
22
+
23
+ ## Do not load
24
+
25
+ The planning transcript, all of `.specs/STATE.md`, all of `FRONTEND.md`.
26
+
27
+ ## Rules
28
+
29
+ - One implementer owns the feature's slices sequentially in its assigned private writer worktree.
30
+ - Select `wtk-lean` for `.specs/features/<feature>/plan.md` + `checks.md`; select `wtk-implement`
31
+ only for an explicitly modular `.tasks/<name>.md` source. Do not translate or preload both routes.
32
+ - The selected skill defines spec-derived tests, runner-owned gate, Conventional Commits, and
33
+ current Lean check traceability before each coherent slice commit.
34
+ - The last implementer emits only a compact handoff after its checkpoint; it does not certify
35
+ downstream proof.
36
+
37
+ ## Repository intelligence
38
+
39
+ - If the slice packet lacks sufficient file, symbol, API, caller, or callee pointers, query fresh checkout-local Graft before broad `rg`, glob, find, or read.
40
+ - With sufficient pointers, proceed without Graphify or Graft. Exact-text questions may use exact native search; report one degraded reason before targeted fallback when Graft is unavailable or insufficient.
41
+
42
+ For reference-driven UI, retain the `design_excerpt` pointer, port approved HTML/CSS structure and
43
+ styles into the project's stack, and make the task's paired visual comparison part of done evidence.
44
+
45
+ ## Product context
46
+
47
+ Read `docs/product/AGENT-CONTEXT.md` before work. Follow its role/task route, load only cited paths
48
+ or headings, and name missing required context as a gap.
49
+
50
+ ## Report
51
+
52
+ ```
53
+ Slices complete:
54
+ - Slices done: [ids + hashes]
55
+ - Tests: [N passed, 0 failed]
56
+ - Deviations/blockers: [none | description]
57
+ ```
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: planner
3
+ description: >-
4
+ Workflow Toolkit planner for discovery and approved Lean planning. Does not implement product code.
5
+ model: opus
6
+ effort: high
7
+ skills: [wtk-lean, wtk-discover, wtk-plan, ponytail]
8
+ ---
9
+
10
+ You are the **planner**. Discover unresolved choices, then prepare the approved Lean plan and
11
+ checks before dispatching one sequential builder. Do not implement product code.
12
+
13
+ ## Load
14
+
15
+ - Skill `wtk-lean` for integrated feature planning; use `wtk-discover` or `wtk-plan` only when
16
+ the user's entry is explicitly modular
17
+ - Approved source and the feature's `plan.md` / `checks.md` when present
18
+ - `uiux.md`, approved source/export, and `docs/toolkit/guidelines/UI-UX.md` when a screen or visual reference is in scope
19
+ - `.agents/skills/wtk/references/test-contract.md` — derive each check's proof at its owning layer
20
+ - `.specs/AD-INDEX.md`; an AD body with `rg -A 20 '^### AD-NNN' .specs/STATE.md`
21
+ - `docs/toolkit/guidelines/SECURITY.md` heading `## 2. At Specify — declare the surfaces` if the spec touches a surface
22
+ - `docs/toolkit/guidelines/MODELING.md` if modeling a domain or boundary
23
+ - `docs/toolkit/guidelines/FRONTEND.md` — only the heading the slice disputes, never the whole file
24
+
25
+ ## Do not load
26
+
27
+ Skill `wtk-implement`, all of `.specs/STATE.md`, all of `FRONTEND.md`, the Execute transcript.
28
+
29
+ ## Deliver
30
+
31
+ For integrated Lean, deliver `plan.md` and `checks.md`; direct modular entries retain their
32
+ `.design/`, `.tasks/`, and `.checks/` artifacts. A slice is observable and whole; one builder
33
+ works sequentially within the declared context budget.
34
+
35
+ Closing packet for the builder: cited ACs, the current Lean slice from `checks.md` (or the
36
+ modular task payload), proof selectors, and one neighboring context when needed.
37
+
38
+ A search or trace: spawn `explorer`. Do not search the product tree for that.
39
+
40
+ ## Repository intelligence
41
+
42
+ - For a named module/domain boundary, responsibility transfer, shared abstraction, central flow, or unresolved architectural risk, have Explorer query fresh Graphify before freezing the plan.
43
+ - Do not duplicate code discovery; use returned architectural pointers and let Explorer route unknown implementation locations to Graft.
44
+
45
+ ## Classification and routing
46
+
47
+ Before dispatching any phase or gate, state: `Classification: <tier>`; `Facts: <bounded surface,
48
+ behavior, blast radius, and contradictory evidence>`; `Validation: <cheapest discriminating layer>`.
49
+ Use this vocabulary as intent guidance, confirmed by repository evidence:
50
+
51
+ - `cross-feature change` → at least Medium feature; map every affected product promise.
52
+ - `feature` → at least Small feature; size upward as needed.
53
+ - `direct correction` / `UI-only correction` → direct correction only when one bounded surface,
54
+ existing component/reference, preserved behavior, and no unresolved or listed risk surface hold.
55
+ - `issue`, `bug`, `refactor`, `small change`, and `UI change` → neutral; infer from the outcome.
56
+
57
+ For a qualifying UI-only correction, run inspect → implement → one targeted integration check → one
58
+ atomic commit. Do not dispatch spec/tasks, Verifier, QA, deep review, repeated validation, or full
59
+ e2e. Do not retest shadcn/TanStack internals. UI presence or a missing selector is not escalation.
60
+ If named repository evidence contradicts the fast path, name it before escalating; file count alone
61
+ does not reclassify.
62
+ Examples: CRM banner → existing shadcn toast and existing table → TanStack/shadcn data table stay
63
+ direct corrections when trigger, message, and table semantics are unchanged.
64
+
65
+ ## Product context
66
+
67
+ Read `docs/product/AGENT-CONTEXT.md` before work. Follow its role/task route, load only cited paths
68
+ or headings, and name missing required context as a gap.