avtc-pi-featyard 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +194 -0
- package/agents/fy-design-reviewer.md +77 -0
- package/agents/fy-feature-verifier.md +24 -0
- package/agents/fy-general-reviewer.md +81 -0
- package/agents/fy-guidelines-reviewer.md +46 -0
- package/agents/fy-implementer.md +20 -0
- package/agents/fy-performance-reviewer.md +46 -0
- package/agents/fy-plan-reviewer.md +74 -0
- package/agents/fy-plan-verifier.md +44 -0
- package/agents/fy-quality-reviewer.md +50 -0
- package/agents/fy-requirements-reviewer.md +46 -0
- package/agents/fy-researcher.md +6 -0
- package/agents/fy-security-reviewer.md +46 -0
- package/agents/fy-task-verifier.md +42 -0
- package/agents/fy-testing-reviewer.md +60 -0
- package/assets/images/kanban-board.png +0 -0
- package/assets/images/settings-dropdown.png +0 -0
- package/assets/images/settings.png +0 -0
- package/assets/images/widget.png +0 -0
- package/docs/CONFIGURATION.md +266 -0
- package/index.ts +8 -0
- package/package.json +85 -0
- package/skills/fy-design/SKILL.md +108 -0
- package/skills/fy-design-review/SKILL.md +45 -0
- package/skills/fy-finish/SKILL.md +28 -0
- package/skills/fy-implement/SKILL.md +36 -0
- package/skills/fy-plan/SKILL.md +77 -0
- package/skills/fy-plan-review/SKILL.md +45 -0
- package/skills/fy-research/SKILL.md +38 -0
- package/skills/fy-review/SKILL.md +88 -0
- package/skills/fy-verify/SKILL.md +23 -0
- package/src/commands/auto-agent-commands.ts +748 -0
- package/src/commands/kanban-commands.ts +278 -0
- package/src/commands/workflow-commands.ts +531 -0
- package/src/compaction/compact-handler.ts +371 -0
- package/src/compaction/compact-message.ts +52 -0
- package/src/compaction/compact-trigger.ts +121 -0
- package/src/compaction/safe-editor-write.ts +18 -0
- package/src/events/agent/agent-end.ts +19 -0
- package/src/events/agent/agent-settled.ts +20 -0
- package/src/events/agent/agent-start.ts +18 -0
- package/src/events/agent/turn-end.ts +20 -0
- package/src/events/agent/turn-start.ts +19 -0
- package/src/events/event-deps.ts +33 -0
- package/src/events/index.ts +91 -0
- package/src/events/input/input.ts +143 -0
- package/src/events/session/context.ts +68 -0
- package/src/events/session/model-select.ts +20 -0
- package/src/events/session/session-compact.ts +20 -0
- package/src/events/session/session-shutdown.ts +26 -0
- package/src/events/session/session-start.ts +45 -0
- package/src/events/session/session-tree.ts +17 -0
- package/src/events/tool/tool-call.ts +58 -0
- package/src/events/tool/tool-result.ts +54 -0
- package/src/git/git-queries.ts +154 -0
- package/src/git/resolve-base-branch.ts +173 -0
- package/src/git/worktrees/worktree-helpers.ts +142 -0
- package/src/git/worktrees/worktree-interception.ts +66 -0
- package/src/git/worktrees/worktree-lifecycle.ts +380 -0
- package/src/guardrails/completion-gating.ts +63 -0
- package/src/guardrails/file-classifier.ts +461 -0
- package/src/guardrails/force-add-guard.ts +312 -0
- package/src/guardrails/guardrail-tracker.ts +73 -0
- package/src/guardrails/guardrail-violations.ts +47 -0
- package/src/guardrails/guardrails-engine.ts +663 -0
- package/src/guardrails/session-guardrails.ts +75 -0
- package/src/guardrails/shell-decompose.ts +285 -0
- package/src/guardrails/tdd-enforcement.ts +122 -0
- package/src/guardrails/test-output.ts +272 -0
- package/src/index.ts +598 -0
- package/src/integrations/parallel-work-guardrail-integration.ts +29 -0
- package/src/integrations/subagent-integration.ts +166 -0
- package/src/integrations/todo-integration.ts +58 -0
- package/src/kanban/auto-agent/auto-agent-cleanup.ts +37 -0
- package/src/kanban/auto-agent/auto-agent-events.ts +142 -0
- package/src/kanban/auto-agent/auto-agent-grace-period.ts +83 -0
- package/src/kanban/auto-agent/auto-agent-lifecycle.ts +497 -0
- package/src/kanban/auto-agent/auto-agent-notify.ts +43 -0
- package/src/kanban/auto-agent/auto-agent-pause.ts +44 -0
- package/src/kanban/auto-agent/auto-agent-state-machine.ts +629 -0
- package/src/kanban/data/kanban-database.ts +851 -0
- package/src/kanban/data/kanban-db-schema.ts +137 -0
- package/src/kanban/data/kanban-detect-project.ts +43 -0
- package/src/kanban/data/kanban-move-feature.ts +43 -0
- package/src/kanban/data/kanban-types.ts +64 -0
- package/src/kanban/ensure-feature.ts +226 -0
- package/src/kanban/kanban-board-ui/app.js +1125 -0
- package/src/kanban/kanban-board-ui/csv-parser.d.ts +5 -0
- package/src/kanban/kanban-board-ui/csv-parser.js +80 -0
- package/src/kanban/kanban-board-ui/index.html +127 -0
- package/src/kanban/kanban-board-ui/style.css +820 -0
- package/src/kanban/kanban-bridge.ts +216 -0
- package/src/kanban/kanban-context.ts +43 -0
- package/src/kanban/kanban-events.ts +34 -0
- package/src/kanban/kanban-generate-title.ts +259 -0
- package/src/kanban/kanban-generate-topic.ts +170 -0
- package/src/kanban/kanban-operations.ts +170 -0
- package/src/kanban/kanban-server.ts +931 -0
- package/src/kanban/kanban-turn-handlers.ts +55 -0
- package/src/kanban/model-capture.ts +34 -0
- package/src/log.ts +47 -0
- package/src/phases/env-sync.ts +64 -0
- package/src/phases/execution-mode.ts +79 -0
- package/src/phases/implement-to-verify.ts +31 -0
- package/src/phases/phase-progression.ts +249 -0
- package/src/phases/phase-transitions.ts +226 -0
- package/src/phases/workflow-router.ts +98 -0
- package/src/prompts/finish-instructions.ts +143 -0
- package/src/prompts/skill-block-builder.ts +73 -0
- package/src/prompts/skill-expansion.ts +262 -0
- package/src/prompts/task-gate-skill.ts +83 -0
- package/src/prompts/template-engine.ts +433 -0
- package/src/prompts/text-blocks.ts +279 -0
- package/src/review/review-context.ts +56 -0
- package/src/review/review-counter.ts +66 -0
- package/src/review/review-empty-loop-tracking.ts +52 -0
- package/src/review/review-loops.ts +217 -0
- package/src/review/review-report.ts +101 -0
- package/src/settings/model-overrides.ts +269 -0
- package/src/settings/settings-schema.ts +458 -0
- package/src/settings/settings-types.ts +81 -0
- package/src/settings/settings-ui.ts +222 -0
- package/src/shared/errors.ts +24 -0
- package/src/shared/global.d.ts +22 -0
- package/src/shared/session-entries.ts +24 -0
- package/src/shared/types.ts +195 -0
- package/src/shared/workflow-refs.ts +253 -0
- package/src/shared/workflow-types.ts +180 -0
- package/src/snippets/vendored/subscribe-to-dialog-coordinator.ts +98 -0
- package/src/snippets/vendored/subscribe-to-notifications.ts +150 -0
- package/src/snippets/vendored/subscribe-to-parallel-work-guardrail.ts +35 -0
- package/src/snippets/vendored/subscribe-to-subagent.ts +67 -0
- package/src/snippets/vendored/subscribe-to-todo.ts +63 -0
- package/src/state/archive-artifacts.ts +602 -0
- package/src/state/artifact-junction.ts +462 -0
- package/src/state/artifact-paths.ts +230 -0
- package/src/state/feature-activation.ts +239 -0
- package/src/state/feature-management.ts +325 -0
- package/src/state/feature-record-store.ts +39 -0
- package/src/state/feature-session.ts +263 -0
- package/src/state/feature-state.ts +439 -0
- package/src/state/post-turn-dispatch.ts +106 -0
- package/src/state/session-lifecycle.ts +346 -0
- package/src/state/state-persistence.ts +122 -0
- package/src/state/worth-notes.ts +89 -0
- package/src/tools/add-to-backlog.ts +117 -0
- package/src/tools/phase-ready.ts +742 -0
- package/src/tools/task-ready-advance.ts +235 -0
- package/src/tools/text-result.ts +15 -0
- package/src/ui/featyard-widget.ts +250 -0
- package/src/ui/manage-features-dialog.ts +246 -0
- package/src/ui/select-dialog.ts +27 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-design
|
|
3
|
+
description: "Run before any feature or behavior-changing work begins: research the codebase, settle the design with the user, and write the design document the planning and implementation phases follow."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Designing a Feature
|
|
8
|
+
Investigate the codebase before asking anything. Drive the design as a dialogue — one focused question per turn, one section at a time, each section confirmed before the next.
|
|
9
|
+
|
|
10
|
+
> The document is a **specification, not a plan.** It states WHAT the feature achieves, HOW it integrates with the existing system, and HOW it affects every area it touches — in enough detail that planning only has to *sequence* the work, not *decide* it. If you drift into step-by-step build instructions, pull back to the contract.
|
|
11
|
+
|
|
12
|
+
## Scope of action
|
|
13
|
+
- Read source code and documentation.
|
|
14
|
+
- Write design documents to `{{PI_FY_DESIGN_RELATIVE_DIR}}/`.
|
|
15
|
+
- Read from `.featyard/research/`.
|
|
16
|
+
- Dispatch fy-researcher subagents.
|
|
17
|
+
- Modify no other files.
|
|
18
|
+
|
|
19
|
+
## Before you start
|
|
20
|
+
- Run `git status` and the recent-commit log before any design work. If the branch already carries uncommitted or unmerged work, surface it and ask the user how to proceed: finish that work first, stash it, or continue here. The user picks the base branch.
|
|
21
|
+
- Check AGENTS.md/CLAUDE.md for requirements to address during design.
|
|
22
|
+
|
|
23
|
+
## Frame the Goal
|
|
24
|
+
- Ground every later decision in the codebase's present state: read the relevant files, docs, and recent history before deciding.
|
|
25
|
+
- Before designing anything new, search the codebase and its ecosystem for an existing solution. Reuse it when the approach is sound; do not perpetuate a wrong architecture — judge the existing design before building on it.
|
|
26
|
+
- When the feature hooks into existing control flow, read the full target function and enumerate every branch; specify how the feature applies to each. Ask before proceeding if behavior is unclear.
|
|
27
|
+
- Drive the conversation with one question per turn; offer multiple-choice options when possible. Aim each question at the purpose, the hard constraints, and what counts as done.
|
|
28
|
+
- **Lock the evaluation criteria now:** the purpose, constraints, and success criteria are the yardstick every approach is measured against — write them down explicitly. Separate hard constraints (must do / must not break) from soft preferences (nice to optimize).
|
|
29
|
+
- If the change seems trivial after understanding: ask whether to create a design doc (reviews/verification catch side-effects), or `/fy:reset` + implement directly + `/skill:fy-review` after.
|
|
30
|
+
|
|
31
|
+
## Ideation
|
|
32
|
+
Strong design is two moves — diverge, then converge. The common failure is committing to the first plausible idea.
|
|
33
|
+
- **Diverge first:** generate genuinely distinct *architectures* — where the logic lives, what owns what, what flows where — not the same design relabeled or merely split into files. Make each sharp enough to name; if two answer "what it makes easy / hard" the same way, they are still one — keep diverging.
|
|
34
|
+
- **Converge against the locked criteria:** score *each* option against *each* criterion (the locked criteria plus coupling, blast radius, testability, behavior-change scope, reversibility) — not pros for your favorite and cons for the rest.
|
|
35
|
+
- Lead with the recommendation; justify it against the **runner-up** — name the closest alternative and why the pick wins for this codebase. If you can't articulate why the runner-up loses, you don't yet know enough to recommend.
|
|
36
|
+
- Stress-test: where does it break under failure, concurrency, or scale? Which plausible future change or existing component does it fight? Re-open the choice if later research invalidates an assumption it rested on.
|
|
37
|
+
|
|
38
|
+
## Deep investigation
|
|
39
|
+
Use fy-researcher subagents for any question about code behavior, dependencies, or call chains. They run in isolated context and trace deep call chains without crowding your conversation. Spawn {{PI_FY_RESEARCHER_MIN}}-{{PI_FY_RESEARCHER_MAX}} per question, scaled to scope.
|
|
40
|
+
|
|
41
|
+
- **Initial exploration** before writing: survey relevant code areas. Output `{{PI_FY_RESEARCH_DIR}}/{{PI_FY_FEATURE_SLUG}}-design-initial-agent-{N}.md`.
|
|
42
|
+
- **Per-section deep dive** before each section: trace the code it affects. Output `{{PI_FY_RESEARCH_DIR}}/{{PI_FY_FEATURE_SLUG}}-design-section-{sectionNumber}-agent-{N}.md`.
|
|
43
|
+
- **On-demand** whenever a codebase question arises during conversation.
|
|
44
|
+
- **Locate every integration point:** all callers of functions you change, all readers/writers of data you change, all subscribers to events or signals you change, and any code that pattern-matches (by name, type, or string) on something you alter. An integration point first found during planning or review is a gap this phase closed.
|
|
45
|
+
- **Map the blast radius:** every area the change touches — callers, callees, consumers of the data/state, shared state, types/schemas, config, persistence, tests, docs, scripts, tooling — and the impact type (consumes, produces, breaks, must update). An affected area is anywhere behavior is observable to a caller, consumer, or stored artifact. If you can't yet name them, that's a research gap, not a reason to narrow scope.
|
|
46
|
+
- **Trace control-flow and data-flow end to end:** control from invocation to termination (early returns, errors, async completion); data from each value's origin through every transformation to its sink. Every place they cross a boundary is where a contract must be defined.
|
|
47
|
+
- **Stock the solution space, not just the status quo:** have fy-researchers surface other ways this problem (or an analogous one) is already solved — in this codebase, dependencies, or the ecosystem. Prior art is a candidate approach to evaluate, not background reading.
|
|
48
|
+
- **Depth rules:** trace to root cause, not symptoms; understand the mechanism before changing it; check history (git blame, docs, prior decisions) before changing established patterns; separate investigation from design (answer with facts; propose changes only when asked).
|
|
49
|
+
- **Sufficiency loop:** after each report, ask what new questions arose, what stays uncertain, what needs another angle, what blocks a decision; spawn more fy-researchers until no new questions arise and the picture is fully explored. If a fy-researcher fails: retry once narrower, else proceed and note the gap.
|
|
50
|
+
|
|
51
|
+
**Anti-patterns — do NOT:**
|
|
52
|
+
- Read a file or two, form a surface impression, and proceed. Spawn a fy-researcher.
|
|
53
|
+
- Describe the existing state as optimal. Ask "is there a better way?" before preserving it.
|
|
54
|
+
- Propose the weakest enforcement. For safety/correctness, propose code-level enforcement, not instruction-based self-restraint.
|
|
55
|
+
- Change form without changing structure. Renaming/reorganizing/splitting is not improvement — redesign the architecture first.
|
|
56
|
+
- Accept coupling as necessary because it exists. Ask "architectural or accidental?"
|
|
57
|
+
- State assumptions as facts. When uncertain, flag "needs investigation".
|
|
58
|
+
|
|
59
|
+
```ts
|
|
60
|
+
subagent({
|
|
61
|
+
tasks: [{ agent: "fy-researcher", task: "<what to investigate and where to write findings>" }]
|
|
62
|
+
})
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Architecture
|
|
66
|
+
{{PI_FY_ARCHITECTURE_PRINCIPLES}}
|
|
67
|
+
- Specify what must be covered: critical paths, edge cases, and regressions, so implementation and verification know the target.
|
|
68
|
+
|
|
69
|
+
## Present the design
|
|
70
|
+
- Build the design document one numbered section at a time. Show each section in chat and get explicit approval before writing it to the file.
|
|
71
|
+
- **NEVER write to `{{PI_FY_DESIGN_DOC_PATH}}` before user approval.** The `<!-- approved -->` marker is added only after the user confirms. Once approved, append via `edit`.
|
|
72
|
+
- The design doc is the permanent knowledge base; research reports are working notes. Summarize key findings with a link to the report; do not copy reports verbatim.
|
|
73
|
+
- **Every section includes:** Current state (mechanism traced during research); Proposed change (what & why); Constraints & edge cases; Uncertainties; Rejected alternatives (brief).
|
|
74
|
+
- **Make the architectural decisions explicit per section** — these are spec, not for planning to invent:
|
|
75
|
+
- **Failure modes** — what can fail, how it fails (exception, default, no-op, degraded mode), and how the failure is bounded so it cannot cascade.
|
|
76
|
+
- **Backwards compatibility** — which callers, consumers, persisted data, configs, or running instances rely on current behavior; whether the change preserves, migrates, or breaks each; if it breaks, the migration and who is affected.
|
|
77
|
+
- **State & data migration** — if stored state, schema, or format changes: how existing data transitions, and what happens to data that doesn't fit.
|
|
78
|
+
- **Concurrency, ordering & lifecycle** — if the feature involves shared state, background work, or startup/shutdown interleaving: the ordering guarantees and the races that cannot occur.
|
|
79
|
+
- **Scenario enumeration:** for each component or integration point, specify behavior for the normal case, each error type, boundary conditions, and interaction with other components. Each scenario must be concrete enough to act as ground truth — if it leaves a real choice open, resolve it or raise it as an unresolved decision. This prevents the most common review finding: "the design doesn't say what happens when X."
|
|
80
|
+
- **Define every behavioral change as what / where / new-behavior:** WHERE (file, module, integration point), WHAT changes, and the NEW behavior — how it differs from current and how an observer detects the difference. Cover the normal path AND every error/failure/boundary path.
|
|
81
|
+
- **Treat Uncertainties as work items to close:** the user is consulted here, so resolve each in design via targeted research, history/docs, or surfacing it to the user — never defer one to a later phase. One that survives every attempt is a genuine open question — escalate it explicitly; don't let it quietly become a gap.
|
|
82
|
+
- **Every factual claim is traceable** to evidence — a cited research report or a specific file/location you read. A claim resting on assumption is not yet a fact; flag it for investigation.
|
|
83
|
+
- **State acceptance criteria:** the testable conditions that define done — what must be true or observable for the feature to be considered complete. These feed verification.
|
|
84
|
+
- **Give each architectural decision a stable reference** (e.g. D1, D2) so the document and later phases can cite it ("amends D3", "see D7") and verification can check each one. (Distinct from numbering *sections* — this is decision traceability.)
|
|
85
|
+
- **If the change spans independently-shippable components** (packages, services, repos), state the ordering / deployment dependency between them and which side lands first.
|
|
86
|
+
- **If the feature has user- or operator-visible state or failures**, specify how they surface (status, logs, error reporting) and how the user knows it is working — or that it failed.
|
|
87
|
+
- Favor designs that are cheap to verify: sharp boundaries, few hidden dependencies, behavior you can assert directly.
|
|
88
|
+
- Use the `todo` tools to track planned work for preparing the design document. The todo list survives context compaction — every item needs comprehensive details (step-by-step instructions and references to docs, sections, or file paths).
|
|
89
|
+
- **Record all user decisions** into the doc's "Appendix: User Decisions" immediately after each decision (do not batch). Each entry: decision, rationale, implication. Do not defer without explicit user approval.
|
|
90
|
+
|
|
91
|
+
## Completeness — the done-condition
|
|
92
|
+
Do not declare the design complete until every one passes; state the passing audit before stopping:
|
|
93
|
+
- Every user decision captured, with rationale and implication.
|
|
94
|
+
- Every open question resolved — none left dangling.
|
|
95
|
+
- Every codebase research the design depends on — done and cited.
|
|
96
|
+
- Every affected area from the blast-radius map — covered in detail.
|
|
97
|
+
- Every behavioral change — defined as what / where / new-behavior.
|
|
98
|
+
- Every rejected alternative — recorded with the decisive reason.
|
|
99
|
+
|
|
100
|
+
**Re-read the document as a stranger:** planning will break it into steps and review will audit the build against it; both read what is written, not what you intended. Re-read end-to-end once and fix any missing step, undefined behavior, or uncovered area first.
|
|
101
|
+
|
|
102
|
+
## When the user corrects you
|
|
103
|
+
When the user corrects you, revise to match the correction and confirm your understanding before continuing. If still uncertain, investigate with a fy-researcher — do not guess.
|
|
104
|
+
|
|
105
|
+
## Hand-off
|
|
106
|
+
- {{PI_FY_DESIGN_HANDOFF}}
|
|
107
|
+
- Do NOT run design review — the extension handles it automatically.
|
|
108
|
+
- Do NOT start implementing.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-design-review
|
|
3
|
+
description: "Single-iteration design review — runs one review pass on a design document. The extension handles loop decisions."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Design Review — Single Iteration
|
|
8
|
+
You are performing **one iteration** of design review. The extension decides whether to loop again.
|
|
9
|
+
|
|
10
|
+
## Review Context
|
|
11
|
+
**Feature:** `{{PI_FY_FEATURE_SLUG}}`
|
|
12
|
+
**Review loop:** `{{PI_FY_REVIEW_LOOP_NUMBER}}`
|
|
13
|
+
**Known issues:** `{{PI_FY_KNOWN_ISSUES_PATH}}`
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
### Step 1: Scope the Review
|
|
18
|
+
1. Read the design document at `{{PI_FY_DESIGN_DOC_PATH}}`
|
|
19
|
+
2. Read relevant project context (existing code, patterns, conventions)
|
|
20
|
+
|
|
21
|
+
### Step 2: Run Design Review
|
|
22
|
+
Always run this review — NEVER skip, even if you think there is nothing new to review.
|
|
23
|
+
|
|
24
|
+
{{PI_FY_REVIEW_METHOD}}
|
|
25
|
+
|
|
26
|
+
> ⚠️ **Do not dispatch a `-fork` variant.** The extension auto-forks reviewers when configured in settings.
|
|
27
|
+
|
|
28
|
+
### Step 3: Revalidate Findings
|
|
29
|
+
For each finding: read the design document section, verify the claim against source code. Do not accept reviewer claims at face value.
|
|
30
|
+
|
|
31
|
+
**Review corrects an approved spec — it never makes or changes a decision.** When a fix might change a decision, default to the user: present it, never apply it.
|
|
32
|
+
- **Correction → apply** to the design document — after confirming it contradicts nothing in the doc's "User Decisions" appendix. A correction preserves meaning: a citation, path, or line number; a contradiction between statements already in the doc; or a gap in a mechanism the doc already specifies.
|
|
33
|
+
- **Change request → present to the user**, re-checking it against the document and its recorded user decisions. A fix changes a decision if it adds, removes, or alters any decision, option, type, interface, component, concept, or dependency; changes behavior or defaults; or amends or reverses a recorded user decision. If dismissed → append to known-issues file as "pending user decision".
|
|
34
|
+
- **False positive → discard** and append to known-issues file.
|
|
35
|
+
|
|
36
|
+
Do not duplicate existing entries in the known-issues file.
|
|
37
|
+
|
|
38
|
+
### Step 4: Fix Issues
|
|
39
|
+
Fix confirmed issues in the design document. Commit changes.
|
|
40
|
+
|
|
41
|
+
### Step 5: Present Results
|
|
42
|
+
Summary table: `| # | Severity | Issue | Action |`
|
|
43
|
+
|
|
44
|
+
### Step 6: Done
|
|
45
|
+
Call `phase_ready({ issuesFound, cannotFix, falsePositives })` — issuesFound counts real issues (fixed + cannot-fix), excluding false positives; cannotFix and falsePositives are the counts you dismissed to the known-issues file. The extension handles looping.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-finish
|
|
3
|
+
description: Finish and integrate completed feature work.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Finishing the Feature
|
|
8
|
+
Execute finishing instructions → resolve conflicts → verify tests post-merge → call phase_ready.
|
|
9
|
+
|
|
10
|
+
## Step 1: Execute Finishing Instructions
|
|
11
|
+
{{PI_FY_FINISH_INSTRUCTIONS}}
|
|
12
|
+
|
|
13
|
+
## Conflict Resolution
|
|
14
|
+
If `git merge` reports conflicts:
|
|
15
|
+
1. List conflicted files: `git diff --name-only --diff-filter=U`
|
|
16
|
+
2. For each: read conflict markers, analyze both sides, resolve preferring feature branch BUT validating base branch changes aren't silently discarded. `git add` after resolving.
|
|
17
|
+
3. After all resolved: `git commit`, review the merge diff, verify no unintended changes.
|
|
18
|
+
4. If resolution seems wrong or too complex: `git merge --abort`, report to user.
|
|
19
|
+
|
|
20
|
+
## Post-Merge Verification
|
|
21
|
+
After any successful merge: run the full test suite. If tests fail, investigate whether the merge introduced the breakage. If it did, fix it — the merge caused it, so it is resolvable — then re-run and re-verify before calling phase_ready. If you cannot fix it, revert the merge and report.
|
|
22
|
+
|
|
23
|
+
## Rules
|
|
24
|
+
- Signal completion only for terminal actions (merge, PR, discard) — never for keep-as-is.
|
|
25
|
+
- Never remove worktrees or delete branches; the extension owns cleanup.
|
|
26
|
+
- Require typed confirmation before discarding.
|
|
27
|
+
- Resolve merge conflicts per-file; never blanket `--theirs`.
|
|
28
|
+
- After a merge, investigate and fix any test breakage before completing.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-implement
|
|
3
|
+
description: Implement a feature from its task-plan.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Executing the Task-Plan
|
|
8
|
+
{{PI_FY_WORKTREE_CONTEXT}}
|
|
9
|
+
**Design doc:** `{{PI_FY_DESIGN_DOC_PATH}}`
|
|
10
|
+
**Plan doc:** `{{PI_FY_PLAN_DOC_PATH}}`
|
|
11
|
+
|
|
12
|
+
**Use the `todo` tool to track your work.** The todo list survives context compaction — every item MUST have comprehensive details (step-by-step instructions, references to design sections or file paths).
|
|
13
|
+
|
|
14
|
+
## The Process
|
|
15
|
+
|
|
16
|
+
### Step 1: Load Plan
|
|
17
|
+
Read the plan and seed your task list from its tasks:
|
|
18
|
+
- Init: `todo_init({ items: [{ name: "Task 1", details: "..." }, ...] })`
|
|
19
|
+
- For each task, `todo_add` sub-items mirroring its per-task cycle (Step 2): implement → call `task_ready_advance` (the extension dispatches the per-task gates or advances) → triage any dispatched gate findings → call `task_ready_advance` again with the fixable counts.
|
|
20
|
+
- Complete each sub-item as you finish: `todo_complete({ id })`
|
|
21
|
+
|
|
22
|
+
### Step 2: Execute Tasks
|
|
23
|
+
|
|
24
|
+
`task_ready_advance` starts a task, gates it, and advances — the extension decides whether to run the per-task gates. The `todo` tool tracks the finer work items within each task.
|
|
25
|
+
|
|
26
|
+
Start the first task: `task_ready_advance(nextTask: "<task number + name>")`.
|
|
27
|
+
|
|
28
|
+
For each task:
|
|
29
|
+
**Implement**
|
|
30
|
+
{{PI_FY_IMPLEMENT_MODE}}
|
|
31
|
+
{{PI_FY_WORTH_NOTES}}
|
|
32
|
+
**Gate + advance**
|
|
33
|
+
After task implemented, call `task_ready_advance(nextTask: "<next task number + name>")` and follow tool call result instructions. The extension either asks to end turn to wait for further instructions (run them, triage, then call again with the fixable counts) or advances to the next task (continue working). On the **last planned task**, omit `nextTask` param.
|
|
34
|
+
|
|
35
|
+
### Step 3: All Tasks Complete
|
|
36
|
+
After the last task's `task_ready_advance` call (`nextTask` omitted) the extension advances to the `verify` phase and runs the verification skill.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-plan
|
|
3
|
+
description: Turn an approved design into a task-plan for implementation.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Producing the Task-Plan
|
|
8
|
+
Turn the approved design into a task-plan the implementer runs top-to-bottom: every task sized to one session, self-contained, and traced to a design section.
|
|
9
|
+
|
|
10
|
+
**Design doc:** `{{PI_FY_DESIGN_DOC_PATH}}`
|
|
11
|
+
|
|
12
|
+
## Scope of action
|
|
13
|
+
- Read source code and documentation.
|
|
14
|
+
- Dispatch fy-researcher subagents.
|
|
15
|
+
- Read from `.featyard/research/`.
|
|
16
|
+
- Write task-plan to `{{PI_FY_PLAN_DOC_PATH}}`.
|
|
17
|
+
- Modify no other files.
|
|
18
|
+
|
|
19
|
+
## Research Phase
|
|
20
|
+
Before writing each section/task, spawn fy-researcher subagents to verify the design's assumptions about the codebase.
|
|
21
|
+
Spawn up to {{PI_FY_RESEARCHER_MAX}} fy-researcher(s) per section/task (target: at least {{PI_FY_RESEARCHER_MIN}}). When min is 0, research is optional. Use them to: verify exact file paths and functions, identify line ranges, find related test files, discover integration points.
|
|
22
|
+
When spawning multiple fy-researchers, assign sequential instance numbers to output file paths so they don't collide. Output: `{{PI_FY_RESEARCH_DIR}}/{{PI_FY_FEATURE_SLUG}}-implementation-phase-{phaseNumber}-task-{taskNumber}-agent-{N}.md`
|
|
23
|
+
After fy-researchers complete, read their reports and incorporate findings.
|
|
24
|
+
The agent drives the research, not the reverse: hand each fy-researcher the exact yield to bring back — locations, signatures, line ranges, test files, commands, expected behavior — then carry those specifics into the tasks.
|
|
25
|
+
If the design omits, contradicts, or is ambiguous about something the implementation needs, investigate with a fy-researcher, then resolve it, flag it back as a design gap, or make it an explicit task. Never inherit a silent hole.
|
|
26
|
+
**If a fy-researcher fails:** retry once with narrower scope; else proceed and note the gap.
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
subagent({
|
|
30
|
+
tasks: [{ agent: "fy-researcher", task: "<what to investigate and where to write findings>" }]
|
|
31
|
+
})
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Architecture
|
|
35
|
+
- Carry forward the design's architecture unchanged; do not alter it in the plan.
|
|
36
|
+
- Preserve the design's contracts and boundaries when decomposing into tasks.
|
|
37
|
+
- Flag back to design any task that needs an architecture decision the design did not make.
|
|
38
|
+
{{PI_FY_ARCHITECTURE_PRINCIPLES}}
|
|
39
|
+
- Specify what must be covered: critical paths, edge cases, and regressions, so implementation and verification know the target.
|
|
40
|
+
|
|
41
|
+
## Task shape
|
|
42
|
+
- Size each task so it ships one testable behavior end-to-end — writes it, verifies it green, and commits with nothing left to break down or defer.
|
|
43
|
+
- Carry every detail, decision, and behavior from the design into the task — nothing dropped, condensed, or silently changed.
|
|
44
|
+
- Shape each task so the implementer follows it without doing its own research, making design decisions, decomposing it into subtasks, or resolving uncertainties: state the files it touches, the change it makes, and the test that proves it done.
|
|
45
|
+
- Cover documentation: if the change affects docs (README, CHANGELOG, API docs), plan its update — a dedicated task, or a step in each task that touches it.
|
|
46
|
+
- Reference the design section or decision each task implements (e.g. "implements §4.2 / D7").
|
|
47
|
+
- Order tasks so each one's prerequisites are already done. Default to the design's section order.
|
|
48
|
+
|
|
49
|
+
## Plan Document Header
|
|
50
|
+
```markdown
|
|
51
|
+
# <Feature Name> Task-Plan
|
|
52
|
+
|
|
53
|
+
**Goal:** <one line — what this delivers>
|
|
54
|
+
**Approach:** <the approach in brief>
|
|
55
|
+
**Tech Stack:** <key technologies>
|
|
56
|
+
|
|
57
|
+
> Execution is driven by the `fy-implement` skill the extension injects.
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Guardrails
|
|
61
|
+
Address these failures by design, without over-prescribing implementation technique:
|
|
62
|
+
- Task too large to finish in one pass: decompose before handoff.
|
|
63
|
+
- Plan silently reversing or dropping a design decision: every deviation is explicit and flagged back as a design gap.
|
|
64
|
+
- Component built but never wired together: include a task that integrates each component into its caller or runtime.
|
|
65
|
+
|
|
66
|
+
## Additional areas of attention
|
|
67
|
+
{{PI_FY_ADDITIONAL_AREAS_OF_ATTENTION}}
|
|
68
|
+
|
|
69
|
+
## Incremental Writing
|
|
70
|
+
Write the plan header first, then append each task section on its own, so every task gets full attention and no write runs past its limit. A small plan may go down in a single write.
|
|
71
|
+
|
|
72
|
+
## Hand-off
|
|
73
|
+
Use the `todo` tool to track open items and work through them one at a time — every item needs comprehensive details (step-by-step instructions and references to docs, design sections, or file paths).
|
|
74
|
+
|
|
75
|
+
{{PI_FY_VERIFY_PHASES:plan}}
|
|
76
|
+
|
|
77
|
+
- Call `phase_ready` and end your turn. Do NOT run plan review — the extension handles it. Do NOT start implementing.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-plan-review
|
|
3
|
+
description: "Single-iteration plan review — runs one review pass on an implementation plan. The extension handles loop decisions."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Plan Review — Single Iteration
|
|
8
|
+
You are performing **one iteration** of plan review. The extension decides whether to loop again.
|
|
9
|
+
|
|
10
|
+
## Review Context
|
|
11
|
+
**Feature:** `{{PI_FY_FEATURE_SLUG}}`
|
|
12
|
+
**Review loop:** `{{PI_FY_REVIEW_LOOP_NUMBER}}`
|
|
13
|
+
**Known issues:** `{{PI_FY_KNOWN_ISSUES_PATH}}`
|
|
14
|
+
|
|
15
|
+
## Process
|
|
16
|
+
|
|
17
|
+
### Step 1: Scope the Review
|
|
18
|
+
1. Read the implementation plan at `{{PI_FY_PLAN_DOC_PATH}}`
|
|
19
|
+
2. Read the design document at `{{PI_FY_DESIGN_DOC_PATH}}`
|
|
20
|
+
3. Read relevant project context
|
|
21
|
+
|
|
22
|
+
### Step 2: Run Plan Review
|
|
23
|
+
Always run this review — NEVER skip, even if you think there is nothing new to review.
|
|
24
|
+
{{PI_FY_REVIEW_METHOD}}
|
|
25
|
+
|
|
26
|
+
> ⚠️ **Do not dispatch a `-fork` variant.** The extension auto-forks reviewers when configured in settings.
|
|
27
|
+
|
|
28
|
+
### Step 3: Revalidate Findings
|
|
29
|
+
For each finding: read the plan and design sections, verify the claim against source code. Do not accept reviewer claims at face value.
|
|
30
|
+
|
|
31
|
+
**Plan review corrects the plan — it never changes design intent.** When a finding requires a design-level decision, surface it with a proposal so the design can be updated.
|
|
32
|
+
- **Correction → apply** to the plan document — after confirming it doesn't alter the design's intent or recorded user decisions. A correction preserves intent: a citation, path, or line number; a contradiction between statements already in the plan; or a missing detail in a task the plan already specifies.
|
|
33
|
+
- **Design proposal → present to the user** with the rationale, a concrete proposed change to the design, and the trade-offs versus the current design. A finding requires a design-level decision if it adds, removes, or alters any design decision, option, type, interface, component, concept, or dependency; changes behavior or defaults; or conflicts with a recorded user decision. If the user defers → append to known-issues file as "pending user decision" with the proposal, so it is not lost or re-raised.
|
|
34
|
+
- **False positive → discard** and append to known-issues file.
|
|
35
|
+
|
|
36
|
+
Do not duplicate existing entries in the known-issues file.
|
|
37
|
+
|
|
38
|
+
### Step 4: Fix Issues
|
|
39
|
+
Fix confirmed issues in the plan document. Commit changes.
|
|
40
|
+
|
|
41
|
+
### Step 5: Present Results
|
|
42
|
+
Summary table: `| # | Severity | Issue | Action |`
|
|
43
|
+
|
|
44
|
+
### Step 6: Done
|
|
45
|
+
Call `phase_ready({ issuesFound, cannotFix, falsePositives })` — issuesFound counts real issues (fixed + cannot-fix), excluding false positives; cannotFix and falsePositives are the counts you dismissed to the known-issues file. The extension handles looping.
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-research
|
|
3
|
+
description: Deep code analysis
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Research
|
|
8
|
+
Investigate a specific area of the codebase and produce a structured report of findings. Your job is to find facts, not to make design decisions.
|
|
9
|
+
|
|
10
|
+
**Write only to the output file specified in your task.** Do not write to any other file.
|
|
11
|
+
|
|
12
|
+
⚠️ **Parallel work safety:** You work in parallel with a team on the same working tree. Do not use `git stash/checkout/reset/clean/merge/rebase`, `npm install`, or any command that mutates the working tree or git state. Read-only commands only.
|
|
13
|
+
|
|
14
|
+
## Methodology
|
|
15
|
+
1. **Scope the investigation** — understand the question and focus areas
|
|
16
|
+
2. **Map the landscape** — `find` to list files, `grep` for imports to understand module boundaries. List relevant files and roles.
|
|
17
|
+
3. **Trace call chains** — for each relevant function, `grep` for all callers. Read each caller. Note what conditions trigger the call. Follow the chain upward.
|
|
18
|
+
4. **Enumerate branches** — for central functions, read full body. List every `if`/`else`/`switch`/`try`/`catch` branch and what triggers it. Do not skip branches.
|
|
19
|
+
5. **Identify touch points** — `grep` for variable names, type names, function names across the codebase.
|
|
20
|
+
6. **Record exact references** — file paths, function signatures, type definitions, line numbers.
|
|
21
|
+
7. **Check git history for context** — when investigating a pattern that seems suboptimal (type widening, coupling, cross-boundary access), run `git blame` on affected lines. Note: was this always this way, or was there a deliberate reason?
|
|
22
|
+
8. **Flag suspected issues** — you report facts, not opinions. But if behavior looks incorrect (a flag that skips intended side-effects, a guard that never fires, data that is produced but never consumed), note it as "suspected issue: ..." with evidence. The orchestrator decides.
|
|
23
|
+
|
|
24
|
+
{{PI_FY_RESEARCHER_DELEGATION}}
|
|
25
|
+
|
|
26
|
+
## Output
|
|
27
|
+
Write findings to the output file specified in your task. If no output file is specified, report findings directly in your response. Structure:
|
|
28
|
+
- **What was investigated** — question and scope
|
|
29
|
+
- **Key findings** — facts with exact file references
|
|
30
|
+
- **Call chains and data flow** — how functions connect
|
|
31
|
+
- **Branch enumerations** — every code path where relevant
|
|
32
|
+
- **Dependency classification** (if investigating module boundaries) — for each cross-module reference: exact symbol used, direction (produce/consume), classification (generic interface / host-specific logic / true coupling)
|
|
33
|
+
- **Uncertainties** — anything you could not fully determine
|
|
34
|
+
|
|
35
|
+
## Rules
|
|
36
|
+
- Be precise — exact file paths, function signatures, type names
|
|
37
|
+
- If you cannot fully answer, state what you found and what remains unknown
|
|
38
|
+
- Focus on facts, not opinions or design recommendations
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-review
|
|
3
|
+
description: Feature review skill — dispatches reviewers based on featureReviewMode setting, aggregates findings, runs a single iteration, then calls phase_ready with the issue counts. The extension decides whether to loop again.
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Feature Review — Single Iteration
|
|
8
|
+
You are orchestrating **one iteration** of feature review. Dispatch specialized sub-reviewers as parallel subagents, collect findings, deduplicate, fix, and verify. The extension decides whether to loop again.
|
|
9
|
+
|
|
10
|
+
{{PI_FY_WORKTREE_CONTEXT}}
|
|
11
|
+
**Feature:** `{{PI_FY_FEATURE_SLUG}}`
|
|
12
|
+
**Review loop:** `{{PI_FY_REVIEW_LOOP_NUMBER}}`
|
|
13
|
+
**Design doc:** `{{PI_FY_DESIGN_DOC_PATH}}`
|
|
14
|
+
**Plan doc:** `{{PI_FY_PLAN_DOC_PATH}}`
|
|
15
|
+
**Known issues:** `{{PI_FY_KNOWN_ISSUES_PATH}}`
|
|
16
|
+
|
|
17
|
+
⚠️ **Parallel work safety:** You work in parallel with a team on the same working tree. Do not use `git stash/checkout/reset/clean/merge/rebase`, `npm install`, or any command that mutates the working tree or git state.
|
|
18
|
+
|
|
19
|
+
## Scope of action
|
|
20
|
+
- Read code and run read-only git commands.
|
|
21
|
+
- Write the review report and known-issues file.
|
|
22
|
+
- Edit source files only during the fix steps (4–6) — not during review (1–3).
|
|
23
|
+
|
|
24
|
+
## Process
|
|
25
|
+
|
|
26
|
+
### Step 1: Scope the Review
|
|
27
|
+
1. Determine the diff base. Base commit: `{{PI_FY_BASE_COMMIT_SHA}}`. If this shows `(not available)`, find the commit *before* the first feature commit manually using `git log`. This base is **fixed across all review loops** — every loop reviews the full cumulative diff from this base to HEAD, including unstaged files.
|
|
28
|
+
2. Run: `git diff --name-only <base>..<head>` to list changed files
|
|
29
|
+
3. Read the plan/spec document for requirements context
|
|
30
|
+
4. **Every sub-reviewer MUST review ALL changed files (full diff from base to HEAD) on every review iteration.** Do not narrow scope to "recent changes". Each sub-reviewer won't find all issues in one pass — reviewing the same full scope repeatedly uncovers new findings each loop.
|
|
31
|
+
|
|
32
|
+
### Step 2: Dispatch Reviewers
|
|
33
|
+
Always dispatch reviewers — NEVER skip, even if you think there is nothing new to review.
|
|
34
|
+
{{PI_FY_REVIEWER_DISPATCH}}
|
|
35
|
+
|
|
36
|
+
> ⚠️ **Do not dispatch a `-fork` variant.** The extension auto-forks reviewers when configured in settings.
|
|
37
|
+
|
|
38
|
+
### Step 3: Aggregate, Deduplicate, and Report
|
|
39
|
+
When all sub-reviewers return:
|
|
40
|
+
1. **Collect all findings** and **deduplicate** — different reviewers may describe the same issue differently. Merge by root cause, keep most severe classification and most actionable description.
|
|
41
|
+
2. **Re-index** — Assign sequential issue IDs: `R<loopNumber>-1`, `R<loopNumber>-2`, etc.
|
|
42
|
+
3. **Write the aggregated review report** to `{{PI_FY_REVIEW_REPORT_FILE}}`:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
### Issue R<N>-<index>: <title> [Critical|Important|Minor]
|
|
46
|
+
- **Category:** security|quality|testing|performance|guidelines|requirements|architecture
|
|
47
|
+
- **File:** path/to/file.ts:42-55 (optional)
|
|
48
|
+
- **Description:** What is wrong and why it matters
|
|
49
|
+
- **Suggested fix:** How to fix (optional)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**⚠️ Do NOT fix issues during aggregation.** Every finding that survives deduplication becomes a fix task in Step 4.
|
|
53
|
+
**Update known-issues file** (`{{PI_FY_KNOWN_ISSUES_PATH}}`): Append dismissed issues as `cannot-fix` or `false-positive`.
|
|
54
|
+
**If no issues found:** Write report with empty Issues section. Add a single commit task with `todo_add` (do not re-init your list). Skip to Step 7.
|
|
55
|
+
|
|
56
|
+
### Step 4: Add Fix Tasks
|
|
57
|
+
Append fix tasks plus a final commit task with `todo_add` — do NOT re-init (`todo_init` wipes the whole feature's task state across loops):
|
|
58
|
+
|
|
59
|
+
Example tasks:
|
|
60
|
+
- "[Review #<N>] Fix: <issue summary>"
|
|
61
|
+
- ...
|
|
62
|
+
- "[Review #<N>] Commit: stage and commit all changes"
|
|
63
|
+
|
|
64
|
+
### Step 5: Execute Fix Tasks
|
|
65
|
+
Work through fix tasks one at a time.
|
|
66
|
+
|
|
67
|
+
For each fix task:
|
|
68
|
+
1. **REVALIDATE FIRST** — read the code, check surrounding context. Is this a real issue or false positive?
|
|
69
|
+
2. **If false positive** → append to `{{PI_FY_KNOWN_ISSUES_PATH}}` as false-positive, `todo_complete` the task
|
|
70
|
+
3. **If real issue** → investigate, fix, `todo_complete` the task
|
|
71
|
+
4. **If cannot fix** → append to `{{PI_FY_KNOWN_ISSUES_PATH}}` as cannot-fix, `todo_complete` the task
|
|
72
|
+
5. **For the commit task** → stage and commit, `todo_complete` the task
|
|
73
|
+
|
|
74
|
+
## Fix Discipline
|
|
75
|
+
**You MUST fix every real issue found during review.** Do NOT defer, postpone, or mark issues as cannot-fix unless you have a concrete, technical reason you cannot express in code.
|
|
76
|
+
|
|
77
|
+
- **Do NOT mark issues as `cannot-fix`** because they are "pre-existing", "low-impact", "style", or "future work" — these are not valid reasons. Fix them.
|
|
78
|
+
- **Do NOT mark issues as `false-positive`** without reading the code and verifying with evidence. If the reviewer found it, assume it is real until proven otherwise.
|
|
79
|
+
- **Do NOT skip issues in code within the feature's scope** — if the file was changed as part of this feature (check the cumulative diff from the base commit to HEAD) or was designed/planned to be modified, the issue must be addressed.
|
|
80
|
+
- **If an issue seems too large to fix**, deconstruct it with `todo_add` sub-items and fix each part.
|
|
81
|
+
- **If you genuinely cannot fix an issue** (external blocker, missing dependency, breaking API contract), you MUST escalate to the user: describe the issue, explain why it cannot be fixed, and propose alternatives. Do not silently mark `cannot-fix`. If a feasible solution exists, fix it instead of escalating.
|
|
82
|
+
|
|
83
|
+
### Step 6: Verify Fixes
|
|
84
|
+
Run the project's verification commands. Fix any failures before proceeding.
|
|
85
|
+
|
|
86
|
+
### Step 7: Done
|
|
87
|
+
Call `phase_ready({ issuesFound, cannotFix, falsePositives })` — issuesFound counts real issues (fixed + cannot-fix), excluding false positives. The extension handles looping.
|
|
88
|
+
**Known-issues file format:** Each entry has title, dismissed-as (cannot-fix | false-positive), and description.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fy-verify
|
|
3
|
+
description: Verify implementation before completion — spawns feature-verifier subagent, then runs build/lint/tests
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Verifying the Feature
|
|
8
|
+
Use the `todo` tool to track open items and work through them one at a time. **The todo list survives context compaction — every item MUST have comprehensive details. Include step-by-step instructions and references to docs, design sections, or file paths wherever provided.**
|
|
9
|
+
|
|
10
|
+
{{PI_FY_WORKTREE_CONTEXT}}
|
|
11
|
+
{{PI_FY_VERIFY_PHASES:verify}}
|
|
12
|
+
|
|
13
|
+
Discover and run the project's build, lint, and test commands.
|
|
14
|
+
|
|
15
|
+
## Verification Discipline
|
|
16
|
+
**You MUST fix every issue the verifier finds.** Do NOT dismiss issues as "acceptable" or "not a correctness issue".
|
|
17
|
+
|
|
18
|
+
- **Do NOT skip issues** because "it works as-is" or "it's an internal improvement" — if the plan specified it, it must be implemented.
|
|
19
|
+
- **Do NOT dismiss partial implementation** as acceptable — if the plan said decompose X into 3 modules, all 3 must exist.
|
|
20
|
+
- **Do NOT rationalize gaps** — a gap between plan and implementation is a bug that must be fixed.
|
|
21
|
+
- **If the verifier found it, it is real** until you have concrete evidence otherwise.
|
|
22
|
+
|
|
23
|
+
After all tests pass, call `phase_ready` to signal verify phase completion. The extension handles the verify→review transition.
|