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.
- package/.agents/skills/ponytail/SKILL.md +111 -0
- package/.agents/skills/ponytail-audit/SKILL.md +37 -0
- package/.agents/skills/ponytail-debt/SKILL.md +41 -0
- package/.agents/skills/ponytail-gain/SKILL.md +47 -0
- package/.agents/skills/ponytail-help/SKILL.md +70 -0
- package/.agents/skills/ponytail-review/SKILL.md +52 -0
- package/.agents/skills/prompt-review/SKILL.md +60 -0
- package/.agents/skills/wtk/SKILL.md +64 -0
- package/.agents/skills/wtk/references/artifacts.md +82 -0
- package/.agents/skills/wtk/references/evidence.md +68 -0
- package/.agents/skills/wtk/references/git.md +75 -0
- package/.agents/skills/wtk/references/test-contract.md +76 -0
- package/.agents/skills/wtk/references/validation.md +127 -0
- package/.agents/skills/wtk-config/SKILL.md +102 -0
- package/.agents/skills/wtk-config/assets/agents/claude/deep-reviewer.md +40 -0
- package/.agents/skills/wtk-config/assets/agents/claude/designer.md +57 -0
- package/.agents/skills/wtk-config/assets/agents/claude/explorer.md +41 -0
- package/.agents/skills/wtk-config/assets/agents/claude/implementer.md +57 -0
- package/.agents/skills/wtk-config/assets/agents/claude/planner.md +68 -0
- package/.agents/skills/wtk-config/assets/agents/claude/verifier.md +80 -0
- package/.agents/skills/wtk-config/assets/agents/codex/deep-reviewer.toml +41 -0
- package/.agents/skills/wtk-config/assets/agents/codex/designer.toml +55 -0
- package/.agents/skills/wtk-config/assets/agents/codex/explorer.toml +35 -0
- package/.agents/skills/wtk-config/assets/agents/codex/implementer.toml +52 -0
- package/.agents/skills/wtk-config/assets/agents/codex/planner.toml +66 -0
- package/.agents/skills/wtk-config/assets/agents/codex/verifier.toml +78 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/deep-reviewer.md +38 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/designer.md +55 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/explorer.md +39 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/implementer.md +55 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/planner.md +66 -0
- package/.agents/skills/wtk-config/assets/agents/cursor/verifier.md +79 -0
- package/.agents/skills/wtk-config/scripts/ad-index.py +123 -0
- package/.agents/skills/wtk-config/scripts/repository_intelligence.py +671 -0
- package/.agents/skills/wtk-config/scripts/workflow_config.py +972 -0
- package/.agents/skills/wtk-deep-review/SKILL.md +164 -0
- package/.agents/skills/wtk-deep-review/assets/PROMPT.md +56 -0
- package/.agents/skills/wtk-deep-review/assets/REVIEW_UI.html +1340 -0
- package/.agents/skills/wtk-deep-review/assets/findings.schema.json +113 -0
- package/.agents/skills/wtk-deep-review/references/context-pack.md +88 -0
- package/.agents/skills/wtk-deep-review/references/orchestration.md +164 -0
- package/.agents/skills/wtk-deep-review/references/output-contracts.md +149 -0
- package/.agents/skills/wtk-deep-review/references/publish-github.md +83 -0
- package/.agents/skills/wtk-deep-review/references/state-and-learnings.md +64 -0
- package/.agents/skills/wtk-deep-review/references/subagent-runtimes.md +33 -0
- package/.agents/skills/wtk-deep-review/references/taxonomy.md +70 -0
- package/.agents/skills/wtk-deep-review/scripts/_common.py +371 -0
- package/.agents/skills/wtk-deep-review/scripts/build_jobs.py +561 -0
- package/.agents/skills/wtk-deep-review/scripts/build_knowledge.py +349 -0
- package/.agents/skills/wtk-deep-review/scripts/build_manifest.py +479 -0
- package/.agents/skills/wtk-deep-review/scripts/graft_context.py +160 -0
- package/.agents/skills/wtk-deep-review/scripts/graphify_context.py +75 -0
- package/.agents/skills/wtk-deep-review/scripts/merge_findings.py +313 -0
- package/.agents/skills/wtk-deep-review/scripts/render_html.py +240 -0
- package/.agents/skills/wtk-deep-review/scripts/render_review.py +282 -0
- package/.agents/skills/wtk-deep-review/scripts/run_jobs.py +436 -0
- package/.agents/skills/wtk-deep-review/scripts/token_metrics.py +369 -0
- package/.agents/skills/wtk-discover/SKILL.md +270 -0
- package/.agents/skills/wtk-discover/references/document-format.md +149 -0
- package/.agents/skills/wtk-implement/SKILL.md +95 -0
- package/.agents/skills/wtk-implement/references/checklist-format.md +116 -0
- package/.agents/skills/wtk-implement/references/screens.md +129 -0
- package/.agents/skills/wtk-implement/references/test-policy.md +152 -0
- package/.agents/skills/wtk-implement/references/verify.md +297 -0
- package/.agents/skills/wtk-knowledge-check/SKILL.md +16 -0
- package/.agents/skills/wtk-knowledge-check/scripts/check.ts +502 -0
- package/.agents/skills/wtk-knowledge-check/scripts/cli.ts +32 -0
- package/.agents/skills/wtk-knowledge-check/scripts/frontmatter.ts +44 -0
- package/.agents/skills/wtk-lean/.skill-meta.json +6 -0
- package/.agents/skills/wtk-lean/NOTICE.md +18 -0
- package/.agents/skills/wtk-lean/SKILL.md +137 -0
- package/.agents/skills/wtk-lean/references/build.md +168 -0
- package/.agents/skills/wtk-lean/references/checks.md +253 -0
- package/.agents/skills/wtk-lean/references/memory.md +156 -0
- package/.agents/skills/wtk-lean/references/plan.md +514 -0
- package/.agents/skills/wtk-lean/references/verify.md +336 -0
- package/.agents/skills/wtk-lean/scripts/check_commit.py +121 -0
- package/.agents/skills/wtk-lean/scripts/fixtures/checks.md +98 -0
- package/.agents/skills/wtk-lean/scripts/fixtures/plan.md +119 -0
- package/.agents/skills/wtk-lean/scripts/fixtures/verification.md +41 -0
- package/.agents/skills/wtk-lean/scripts/lessons.py +412 -0
- package/.agents/skills/wtk-lean/scripts/selftest.py +401 -0
- package/.agents/skills/wtk-lean/scripts/validate_checks.py +417 -0
- package/.agents/skills/wtk-lean/scripts/validate_plan.py +580 -0
- package/.agents/skills/wtk-lean/scripts/validate_verification.py +357 -0
- package/.agents/skills/wtk-plan/SKILL.md +102 -0
- package/.agents/skills/wtk-plan/references/document-format.md +222 -0
- package/.agents/skills/wtk-qa/SKILL.md +14 -0
- package/.agents/skills/wtk-qa-execute/SKILL.md +115 -0
- package/.agents/skills/wtk-qa-execute/references/fix-loop.md +23 -0
- package/.agents/skills/wtk-qa-execute/references/session-protocol.md +25 -0
- package/.agents/skills/wtk-qa-plan/SKILL.md +111 -0
- package/.agents/skills/wtk-qa-plan/references/profile.md +35 -0
- package/.agents/skills/wtk-ship/SKILL.md +49 -0
- package/.agents/skills/wtk-ship/remediation.py +170 -0
- package/.agents/skills/wtk-ship/scripts/close_feature.py +83 -0
- package/.agents/skills/wtk-ship/scripts/review_convergence.py +373 -0
- package/.wtk.toml.example +93 -0
- package/AGENTS.md +129 -0
- package/NOTICE.md +12 -0
- package/README.md +440 -0
- package/bin/wtk.js +25 -0
- package/docs/toolkit/README.md +56 -0
- package/docs/toolkit/decisions.md +61 -0
- package/docs/toolkit/guidelines/CONTEXT-BUDGET.md +64 -0
- package/docs/toolkit/guidelines/DX.md +67 -0
- package/docs/toolkit/guidelines/FRONTEND.md +73 -0
- package/docs/toolkit/guidelines/KNOWLEDGE-WIKI.md +128 -0
- package/docs/toolkit/guidelines/MODELING.md +134 -0
- package/docs/toolkit/guidelines/QA-EXECUTION.md +46 -0
- package/docs/toolkit/guidelines/QA-SCENARIOS.md +165 -0
- package/docs/toolkit/guidelines/REVIEW-ROUNDS.md +160 -0
- package/docs/toolkit/guidelines/SECURITY.md +160 -0
- package/docs/toolkit/guidelines/UI-UX.md +117 -0
- package/docs/toolkit/guidelines/WORKFLOW-MEMORY.md +73 -0
- package/docs/toolkit/guidelines.md +50 -0
- package/docs/toolkit/loop.md +77 -0
- package/docs/toolkit/purpose.md +51 -0
- package/docs/toolkit/repository-intelligence.md +53 -0
- package/docs/toolkit/reviews.md +77 -0
- package/knowledge/AGENTS.md +316 -0
- package/knowledge/raw/README.md +17 -0
- package/package.json +74 -0
- package/scripts/install_security_skills.py +816 -0
- package/scripts/installer/engine.js +254 -0
- package/scripts/installer/knowledge.js +28 -0
- package/scripts/installer/packets.js +77 -0
- package/scripts/installer/terminal.js +98 -0
- package/scripts/installer/transaction.js +75 -0
- package/skills-lock.json +92 -0
- package/templates/adoption/agents/core.md +23 -0
- package/templates/adoption/agents/quality.md +3 -0
- package/templates/adoption/knowledge/wiki/architecture/index.md +3 -0
- package/templates/adoption/knowledge/wiki/decisions/index.md +3 -0
- package/templates/adoption/knowledge/wiki/design/index.md +3 -0
- package/templates/adoption/knowledge/wiki/domain/index.md +3 -0
- package/templates/adoption/knowledge/wiki/index.md +3 -0
- package/templates/adoption/knowledge/wiki/log.md +3 -0
- package/templates/adoption/knowledge/wiki/open-questions/index.md +3 -0
- package/templates/adoption/knowledge/wiki/product/index.md +3 -0
- package/templates/adoption/knowledge/wiki/research/index.md +3 -0
- 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.
|