@use-the-fork/spindle 0.0.0-stage → 0.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/LICENSE +21 -0
- package/README.md +3 -2
- package/build/Assets/Blueprints/Catalog.js +110 -0
- package/build/Assets/Blueprints/agents/general.agent.md +67 -0
- package/build/Assets/Blueprints/agents/sdd-code-reviewer.agent.md +62 -0
- package/build/Assets/Blueprints/agents/sdd-code-slop-reviewer.agent.md +59 -0
- package/build/Assets/Blueprints/agents/sdd-implementer.agent.md +77 -0
- package/build/Assets/Blueprints/agents/sdd-orchestrator.agent.md +42 -0
- package/build/Assets/Blueprints/agents/sdd-re-review.agent.md +57 -0
- package/build/Assets/Blueprints/agents/sdd-reviewer.agent.md +89 -0
- package/build/Assets/Blueprints/agents/sdd-task-reviewer.agent.md +54 -0
- package/build/Assets/Blueprints/agents/shared-codebase-analyzer.agent.md +151 -0
- package/build/Assets/Blueprints/agents/shared-codebase-locator.agent.md +130 -0
- package/build/Assets/Blueprints/agents/shared-codebase-pattern-finder.agent.md +247 -0
- package/build/Assets/Blueprints/agents/shared-explore.agent.md +53 -0
- package/build/Assets/Blueprints/agents/shared-r.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-rw.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-rwx.agent.md +17 -0
- package/build/Assets/Blueprints/agents/shared-web-search-researcher.agent.md +122 -0
- package/build/Assets/Blueprints/instructions/code-commenting.instructions.md +39 -0
- package/build/Assets/Blueprints/instructions/source-architecture.instructions.md +15 -0
- package/build/Assets/Blueprints/skills/asd-ste100/CREDITS.MD +1 -0
- package/build/Assets/Blueprints/skills/asd-ste100/SKILL.md +83 -0
- package/build/Assets/Blueprints/skills/asd-ste100/examples/before-after.md +107 -0
- package/build/Assets/Blueprints/skills/asd-ste100/references/writing-rules.md +65 -0
- package/build/Assets/Blueprints/skills/author-agent/SKILL.md +26 -0
- package/build/Assets/Blueprints/skills/author-design/SKILL.md +38 -0
- package/build/Assets/Blueprints/skills/author-instruction/SKILL.md +28 -0
- package/build/Assets/Blueprints/skills/author-skill/SKILL.md +26 -0
- package/build/Assets/Blueprints/skills/grill/SKILL.md +33 -0
- package/build/Assets/Blueprints/skills/grill-design/SKILL.md +41 -0
- package/build/Assets/Blueprints/skills/grill-with-docs/SKILL.md +14 -0
- package/build/Assets/Blueprints/skills/implement/SKILL.md +79 -0
- package/build/Assets/Blueprints/skills/implement-spec/SKILL.md +34 -0
- package/build/Assets/Blueprints/skills/improve-codebase-architecture/HTML-REPORT.md +129 -0
- package/build/Assets/Blueprints/skills/improve-codebase-architecture/SKILL.md +74 -0
- package/build/Assets/Blueprints/skills/int-code-review/SKILL.md +76 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/SKILL.md +238 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/_sections.md +36 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/_template.md +42 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-closing-brace-labels.md +112 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-empty-docblocks.md +132 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-narration.md +118 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/comments-placeholder.md +130 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-generic-catch.md +153 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-impossible-null.md +157 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/defensive-missing-real.md +157 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-generic-placeholders.md +120 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-over-descriptive.md +108 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-suffix-abuse.md +167 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/naming-type-in-name.md +100 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-dependency-creep.md +114 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-premature-interface.md +136 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-single-method-class.md +161 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/over-eng-useless-wrapper.md +140 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-as-any-escape.md +127 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-debug-artifacts.md +144 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-hyper-consistent.md +84 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-no-hack-scars.md +113 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/style-trivial-boilerplate.md +191 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-doesnt-throw.md +132 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-mirror-implementation.md +125 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-mock-everything.md +148 -0
- package/build/Assets/Blueprints/skills/int-code-slop-review/rules/test-snapshot-abuse.md +131 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/SKILL.md +116 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/references/DEEPENING.md +37 -0
- package/build/Assets/Blueprints/skills/int-codebase-design/references/DESIGN-IT-TWICE.md +44 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/SKILL.md +78 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/references/ADR-FORMAT.md +47 -0
- package/build/Assets/Blueprints/skills/int-domain-modeling/references/GLOSSARY-FORMAT.md +60 -0
- package/build/Assets/Blueprints/skills/int-prototype/LOGIC.md +67 -0
- package/build/Assets/Blueprints/skills/int-prototype/SKILL.md +30 -0
- package/build/Assets/Blueprints/skills/int-prototype/UI.md +112 -0
- package/build/Assets/Blueprints/skills/int-retrospective/SKILL.md +88 -0
- package/build/Assets/Blueprints/skills/int-retrospective/assets/retrospective-prompt.md +38 -0
- package/build/Assets/Blueprints/skills/int-retrospective/references/assessment.md +56 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/SKILL.md +64 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/assets/implementer-prompt.md +40 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/assets/reviewer-prompt.md +43 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/aggregate-review.md +7 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/corrective-rounds.md +72 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/example-workflow.md +25 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/full-spec.md +72 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/implementer-corrections.md +9 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/review-inputs.md +26 -0
- package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/verification-evidence.md +7 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/SKILL.md +51 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/references/mocking.md +31 -0
- package/build/Assets/Blueprints/skills/int-test-driven-development/references/tests.md +68 -0
- package/build/Assets/Blueprints/skills/int-testing-agent-guidance/SKILL.md +53 -0
- package/build/Assets/Blueprints/skills/int-verification-before-completion/SKILL.md +25 -0
- package/build/Assets/Blueprints/skills/int-writing-agents/SKILL.md +66 -0
- package/build/Assets/Blueprints/skills/int-writing-for-agents/SKILL.md +86 -0
- package/build/Assets/Blueprints/skills/int-writing-instruction/SKILL.md +57 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/SKILL.md +129 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/assets/interactive.md +83 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/assets/reference.md +32 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/arguments.md +50 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/interactive-skills.md +53 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/persuasion-principles.md +220 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/reference-skills.md +20 -0
- package/build/Assets/Blueprints/skills/int-writing-skills/references/testing-skills.md +48 -0
- package/build/Assets/Blueprints/skills/retrospective/SKILL.md +16 -0
- package/build/Assets/Blueprints/skills/setup-project/SKILL.md +66 -0
- package/build/Assets/Blueprints/skills/to-spec/SKILL.md +53 -0
- package/build/Assets/Blueprints/skills/to-tickets/SKILL.md +49 -0
- package/build/Assets/Blueprints/skills/update-tooling/SKILL.md +86 -0
- package/build/Assets/Templates/Catalog.js +12 -0
- package/build/Assets/Templates/Catalog.ts +17 -0
- package/build/Assets/Templates/project/copilot-instructions.md +17 -0
- package/build/Assets/Templates/project/domain.md +51 -0
- package/build/Assets/Templates/project/ticket-tracker.md +33 -0
- package/build/Assets/Templates/sdd/design.md +25 -0
- package/build/Assets/Templates/sdd/spec.md +29 -0
- package/build/Assets/Templates/sdd/ticket.md +15 -0
- package/build/BlueprintManagement/BlueprintManagementServiceProvider.js +15 -0
- package/build/BlueprintManagement/Catalog/BlueprintCatalog.js +238 -0
- package/build/BlueprintManagement/Commands/BlueprintCommandOptions.js +9 -0
- package/build/BlueprintManagement/Commands/ConflictPolicy.js +6 -0
- package/build/BlueprintManagement/Commands/InitCommand.js +117 -0
- package/build/BlueprintManagement/Commands/Prompts.js +66 -0
- package/build/BlueprintManagement/Commands/UpdateCommand.js +86 -0
- package/build/BlueprintManagement/Handlers/Agents/AgentHandler.js +21 -0
- package/build/BlueprintManagement/Handlers/BlueprintHandlers.js +4 -0
- package/build/BlueprintManagement/Handlers/Instructions/InstructionHandler.js +21 -0
- package/build/BlueprintManagement/Handlers/Skills/SkillHandler.js +10 -0
- package/build/BlueprintManagement/Reconciliation/BlueprintCatalogPlanner.js +87 -0
- package/build/BlueprintManagement/Reconciliation/BlueprintRemovalCoordinator.js +78 -0
- package/build/BlueprintManagement/Services/BlueprintReconciliationService.js +391 -0
- package/build/BlueprintManagement/Services/InstallationService.js +54 -0
- package/build/BlueprintManagement/Support/BlueprintFiles.js +113 -0
- package/build/BlueprintManagement/Types/Blueprint.js +1 -0
- package/build/BlueprintManagement/Types/Installation.js +1 -0
- package/build/BlueprintManagement/Types/Reconciliation.js +1 -0
- package/build/BlueprintManagement/Versioning/BlueprintVersion.js +70 -0
- package/build/BlueprintManagement/Versioning/BlueprintVersioning.js +55 -0
- package/build/Commands/Command.js +3 -0
- package/build/Commands/CommandOptions.js +12 -0
- package/build/Config/Config.js +3 -0
- package/build/Foundation/Application.js +112 -0
- package/build/Foundation/ApplicationBuilder.js +23 -0
- package/build/Foundation/Bootstrap/Bootstrapper.js +2 -0
- package/build/Foundation/Bootstrap/DiscoverGitRoot.js +8 -0
- package/build/Foundation/Bootstrap/LoadConsoleArgs.js +47 -0
- package/build/Foundation/Bootstrap/LoadProjectConfiguration.js +144 -0
- package/build/Foundation/Bootstrap/RegisterProviders.js +12 -0
- package/build/Foundation/Bootstrap/RequireProjectConfiguration.js +14 -0
- package/build/Foundation/ConsoleInvocation.js +1 -0
- package/build/Foundation/Container.js +185 -0
- package/build/Foundation/FoundationServiceProvider.js +5 -0
- package/build/Foundation/Kernel.js +30 -0
- package/build/Foundation/Service.js +23 -0
- package/build/Foundation/ServiceProvider.js +12 -0
- package/build/Git/GitServiceProvider.js +8 -0
- package/build/Git/Services/GitService.js +26 -0
- package/build/Project/ProjectServiceProvider.js +8 -0
- package/build/Project/Services/ProjectService.js +124 -0
- package/build/SubagentDrivenDevelopment/Commands/ChecksRecordCommand.js +35 -0
- package/build/SubagentDrivenDevelopment/Commands/ChecksRequireCommand.js +33 -0
- package/build/SubagentDrivenDevelopment/Commands/ClaimCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/CorrectCommand.js +37 -0
- package/build/SubagentDrivenDevelopment/Commands/CreateCommand.js +26 -0
- package/build/SubagentDrivenDevelopment/Commands/FindingCreateCommand.js +39 -0
- package/build/SubagentDrivenDevelopment/Commands/FindingUpdateCommand.js +36 -0
- package/build/SubagentDrivenDevelopment/Commands/FinishCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/ImplementCommand.js +23 -0
- package/build/SubagentDrivenDevelopment/Commands/NextCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/ReadyCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/RequirementsDecideCommand.js +33 -0
- package/build/SubagentDrivenDevelopment/Commands/ResumeCommand.js +31 -0
- package/build/SubagentDrivenDevelopment/Commands/ReviewCommand.js +55 -0
- package/build/SubagentDrivenDevelopment/Commands/ReviewRequireCommand.js +12 -0
- package/build/SubagentDrivenDevelopment/Commands/StatusCommand.js +21 -0
- package/build/SubagentDrivenDevelopment/Commands/SubmitCommand.js +59 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketCommentCommand.js +24 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketCreateCommand.js +25 -0
- package/build/SubagentDrivenDevelopment/Commands/TicketUpdateCommand.js +31 -0
- package/build/SubagentDrivenDevelopment/Commands/groups.js +36 -0
- package/build/SubagentDrivenDevelopment/Evidence/GitEvidence.js +449 -0
- package/build/SubagentDrivenDevelopment/Evidence/ReportEvidence.js +80 -0
- package/build/SubagentDrivenDevelopment/Models/Assignments.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Evidence.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Findings.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Options.js +1 -0
- package/build/SubagentDrivenDevelopment/Models/Workflow.js +16 -0
- package/build/SubagentDrivenDevelopment/Persistence/AssignmentSchema.js +155 -0
- package/build/SubagentDrivenDevelopment/Persistence/CheckSchema.js +71 -0
- package/build/SubagentDrivenDevelopment/Persistence/FeatureWorkspace.js +76 -0
- package/build/SubagentDrivenDevelopment/Persistence/FileSystem.js +28 -0
- package/build/SubagentDrivenDevelopment/Persistence/FindingSchema.js +81 -0
- package/build/SubagentDrivenDevelopment/Persistence/LedgerRepository.js +322 -0
- package/build/SubagentDrivenDevelopment/Persistence/PathSafety.js +62 -0
- package/build/SubagentDrivenDevelopment/Persistence/ProgressSchema.js +95 -0
- package/build/SubagentDrivenDevelopment/Persistence/ReadinessReader.js +40 -0
- package/build/SubagentDrivenDevelopment/Persistence/ReviewSchema.js +68 -0
- package/build/SubagentDrivenDevelopment/Persistence/TicketRepository.js +147 -0
- package/build/SubagentDrivenDevelopment/Persistence/WorkspaceTransaction.js +282 -0
- package/build/SubagentDrivenDevelopment/Policies/AcceptancePolicy.js +100 -0
- package/build/SubagentDrivenDevelopment/Policies/AssignmentPolicy.js +36 -0
- package/build/SubagentDrivenDevelopment/Policies/CheckPolicy.js +93 -0
- package/build/SubagentDrivenDevelopment/Policies/FindingPolicy.js +53 -0
- package/build/SubagentDrivenDevelopment/Policies/InputValidation.js +36 -0
- package/build/SubagentDrivenDevelopment/Policies/ReadinessPolicy.js +26 -0
- package/build/SubagentDrivenDevelopment/Policies/RequiredReviewers.js +12 -0
- package/build/SubagentDrivenDevelopment/Policies/ReviewPolicy.js +87 -0
- package/build/SubagentDrivenDevelopment/Policies/WorkflowPolicy.js +85 -0
- package/build/SubagentDrivenDevelopment/Services/AssignmentService.js +269 -0
- package/build/SubagentDrivenDevelopment/Services/ChecksService.js +319 -0
- package/build/SubagentDrivenDevelopment/Services/CorrectionService.js +273 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryCorrectionService.js +253 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryFindingService.js +302 -0
- package/build/SubagentDrivenDevelopment/Services/DeliveryService.js +160 -0
- package/build/SubagentDrivenDevelopment/Services/DeliverySubmissionService.js +273 -0
- package/build/SubagentDrivenDevelopment/Services/FeatureCreationService.js +138 -0
- package/build/SubagentDrivenDevelopment/Services/FeatureInspectionService.js +399 -0
- package/build/SubagentDrivenDevelopment/Services/FindingService.js +392 -0
- package/build/SubagentDrivenDevelopment/Services/IntegrationService.js +258 -0
- package/build/SubagentDrivenDevelopment/Services/ReadinessService.js +21 -0
- package/build/SubagentDrivenDevelopment/Services/RequirementsService.js +216 -0
- package/build/SubagentDrivenDevelopment/Services/ReviewService.js +471 -0
- package/build/SubagentDrivenDevelopment/Services/SubmissionService.js +299 -0
- package/build/SubagentDrivenDevelopment/Services/TicketService.js +186 -0
- package/build/SubagentDrivenDevelopment/SubagentDrivenDevelopmentServiceProvider.js +113 -0
- package/build/Support/Records.js +5 -0
- package/build/Support/Repository.js +139 -0
- package/build/Support/Stacks.js +10 -0
- package/build/TemplateRendering/Computed/ComputedContextService.js +13 -0
- package/build/TemplateRendering/Computed/ComputedVariableProvider.js +6 -0
- package/build/TemplateRendering/Computed/ComputedVariableProviders.js +6 -0
- package/build/TemplateRendering/Computed/Providers/InternalSkillDescriptionProvider.js +6 -0
- package/build/TemplateRendering/Computed/Providers/SpindlePackageManagerProvider.js +11 -0
- package/build/TemplateRendering/Computed/ResolveRenderContext.js +18 -0
- package/build/TemplateRendering/Rendering/RenderText.js +43 -0
- package/build/TemplateRendering/TemplateRenderingServiceProvider.js +8 -0
- package/build/Tooling/Commands/ToolingAddCommand.js +29 -0
- package/build/Tooling/Commands/ToolingListCommand.js +19 -0
- package/build/Tooling/Commands/ToolingRemoveCommand.js +19 -0
- package/build/Tooling/Commands/ToolingUpdateCommand.js +30 -0
- package/build/Tooling/Commands/groups.js +4 -0
- package/build/Tooling/Models/ToolingEntry.js +1 -0
- package/build/Tooling/Services/ToolingService.js +278 -0
- package/build/Tooling/ToolingServiceProvider.js +15 -0
- package/build/cli.js +36 -0
- package/build/index.js +31 -0
- package/package.json +54 -3
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-subagent-driven-dev
|
|
3
|
+
description: "This is an internal skill do not load it unless explicitly required by the user or another skill."
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.4.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Subagent-Driven Development
|
|
11
|
+
|
|
12
|
+
The controller coordinates a feature's tickets, workers, checks, reviews, and completion. The feature workspace and `sdd.json` are the source of truth for structured ticket and delivery state; each ticket Markdown file holds its requirements, acceptance criteria, and discussion.
|
|
13
|
+
|
|
14
|
+
Use the existing checkout and preserve user changes and report history. TDD is optional; write appropriate tests and record verification evidence. Load and follow `int-verification-before-completion` before claiming work is complete. Serialize implementation and fixes, and keep implementation edits frozen while a review batch is running.
|
|
15
|
+
|
|
16
|
+
## Workflow map
|
|
17
|
+
|
|
18
|
+
Before acting on each chart node, announce `Step <node ID> - <node label>`, including initial entries, resumed steps, and loop re-entries. After each decision, state its result and selected branch before entering the target node.
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Restore feature state and readiness] --> B{Ready ticket available?}
|
|
23
|
+
B -- Yes --> C[Claim, implement, verify, submit, close ticket]
|
|
24
|
+
C --> A
|
|
25
|
+
B -- No --> D{All tickets closed?}
|
|
26
|
+
D -- No --> E[Resolve prerequisites or record blocker]
|
|
27
|
+
E --> A
|
|
28
|
+
D -- Yes --> F[Run feature checks]
|
|
29
|
+
F --> G{Checks current and passing?}
|
|
30
|
+
G -- No --> K[Correct feature-level work]
|
|
31
|
+
G -- Yes --> H[Request comprehensive feature review]
|
|
32
|
+
H --> I{Blocking finding?}
|
|
33
|
+
I -- Linked ticket --> J[Resume ticket work after review batch]
|
|
34
|
+
J --> A
|
|
35
|
+
I -- Feature-level --> K
|
|
36
|
+
K --> L
|
|
37
|
+
I -- No --> L{Finish gates pass?}
|
|
38
|
+
L -- No --> A
|
|
39
|
+
L -- Yes --> M[Finish feature]
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Ticket workflow
|
|
43
|
+
|
|
44
|
+
1. Read the feature spec, tickets, applicable instructions, glossary, and ADRs. Inspect `spindle sdd status --spec <path>` and `spindle sdd ready --spec <path>` to understand blockers, dependencies, and available work.
|
|
45
|
+
2. Create a ticket for independently actionable work with `spindle sdd ticket create`. Fill its `[REQUIREMENTS]` and `[ACCEPTANCE CRITERIA]` placeholders. Use `spindle sdd ticket update` for tracker status, explicit blockers, and dependencies; the supported lifecycle is `open`, `in-progress`, and `closed`. Readiness is derived from status, blockers, and dependencies rather than stored as a separate triage state.
|
|
46
|
+
3. Claim a ready ticket with `spindle sdd claim`. Dispatch implementation with `spindle sdd implement`; pass the worker the exact assignment and report destination. Submit its report with `spindle sdd submit --role implementation`.
|
|
47
|
+
4. Run relevant tests and checks and record their actual outcomes against the current snapshot. TDD is not required, but verification is.
|
|
48
|
+
5. Address implementation and verification gaps, then close the ticket with `spindle sdd ticket update --status closed` once its acceptance criteria are met. Do not use per-ticket accept or integrate steps.
|
|
49
|
+
|
|
50
|
+
If work is interrupted, inspect `spindle sdd status` and use `spindle sdd resume` to restore the recorded assignment. Preserve existing reports, findings, and evidence. Do not invent missing results or reset progress.
|
|
51
|
+
|
|
52
|
+
## Feature review and completion
|
|
53
|
+
|
|
54
|
+
After every ticket is closed, establish current feature-level checks and request the comprehensive review with `spindle sdd review --scope delivery --inventory <json-array>`. The `sdd-reviewer` is the default reviewer. Add specialists only for justified objectives with `spindle sdd review require --scope delivery --type <agent-name>`; eligible names must be marked `canReview: true` in the Blueprint Catalog, and actual agent access must be confirmed before dispatch.
|
|
55
|
+
|
|
56
|
+
Submit every assigned review report against its exact assignment. Register findings from their report and snapshot. A blocking finding can name `--related-ticket`; once the complete review batch is submitted, that ticket is reopened so work can resume. Resolve blocking findings through ticket work and repeat any invalidated checks and reviews.
|
|
57
|
+
|
|
58
|
+
For detailed review, findings, correction, and finish steps, read [feature delivery](./references/full-spec.md). For feature-level corrective work, follow [corrective rounds](./references/corrective-rounds.md). Feature completion requires all tickets closed, current passing required checks and reviews, and no unresolved delivery blockers. Use the normal Git workflow; SDD does not stage, commit, or publish work and has no per-ticket integration command.
|
|
59
|
+
|
|
60
|
+
## Reports and verification
|
|
61
|
+
|
|
62
|
+
Keep worker reports at their assigned absolute paths inside the feature's `reports/` directory. Preserve earlier reports as history and distinguish inspected evidence from checks actually run. Record failures, unavailable checks, and limitations explicitly. A passing test run is not a substitute for review or for the acceptance criteria.
|
|
63
|
+
|
|
64
|
+
See [verification evidence](./references/verification-evidence.md) for the worker handoff contract.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Template
|
|
2
|
+
|
|
3
|
+
```md
|
|
4
|
+
## Assignment
|
|
5
|
+
|
|
6
|
+
Implement ticket: [TICKET_ID]
|
|
7
|
+
Checkout: [CHECKOUT]
|
|
8
|
+
Mode: [INITIAL_OR_CORRECTIVE]
|
|
9
|
+
|
|
10
|
+
## Requirements and starting state
|
|
11
|
+
|
|
12
|
+
Canonical ticket, comments, and spec/brief:
|
|
13
|
+
[ABSOLUTE_SOURCE_POINTERS]
|
|
14
|
+
|
|
15
|
+
Acceptance criteria and confirmed test seams:
|
|
16
|
+
[CRITERIA_AND_SEAMS]
|
|
17
|
+
|
|
18
|
+
Completed dependencies and starting snapshot:
|
|
19
|
+
[DEPENDENCIES_AND_SNAPSHOT]
|
|
20
|
+
|
|
21
|
+
## Scope and permissions
|
|
22
|
+
|
|
23
|
+
Allowed code, test, and `.scratch` files:
|
|
24
|
+
[FILE_SCOPE]
|
|
25
|
+
|
|
26
|
+
Permissions, including commit authorization:
|
|
27
|
+
[PERMISSIONS]
|
|
28
|
+
|
|
29
|
+
## Verification and hand-back
|
|
30
|
+
|
|
31
|
+
Approved project checks and test working directory:
|
|
32
|
+
[CHECKS_AND_DIRECTORY]
|
|
33
|
+
|
|
34
|
+
Assigned `.scratch` report path:
|
|
35
|
+
[REPORT_PATH]
|
|
36
|
+
|
|
37
|
+
## Correction context (CORRECTIVE only; omit for INITIAL)
|
|
38
|
+
|
|
39
|
+
[ROUND, FINDING_IDS, PRIOR_ATTEMPTS, AND RULINGS, INLINE OR READ_REQUIRED_REFERENCE]
|
|
40
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Template
|
|
2
|
+
|
|
3
|
+
```md
|
|
4
|
+
## Assignment
|
|
5
|
+
|
|
6
|
+
Review scope: [INITIAL_TICKET_OR_CORRECTIVE_TICKET_OR_AGGREGATE_DELIVERY_OR_CORRECTIVE_DELIVERY]
|
|
7
|
+
Mode: [INITIAL_OR_CORRECTIVE_OR_AGGREGATE]
|
|
8
|
+
Implementation description and review objective:
|
|
9
|
+
[DESCRIPTION_AND_OBJECTIVE]
|
|
10
|
+
|
|
11
|
+
## Review inputs
|
|
12
|
+
|
|
13
|
+
REVIEW_INPUTS:
|
|
14
|
+
[ABSOLUTE_READ_REQUIRED_PACKAGE_REFERENCE_OR_EQUIVALENT_INLINE_INPUTS]
|
|
15
|
+
|
|
16
|
+
Implementation report:
|
|
17
|
+
[REPORT_FILE]
|
|
18
|
+
|
|
19
|
+
Known concerns and dependencies:
|
|
20
|
+
[CONCERNS_AND_DEPENDENCIES_OR_NONE]
|
|
21
|
+
|
|
22
|
+
Prior findings, controller rulings, and relevant coverage:
|
|
23
|
+
[PRIOR_REVIEW_STATE_OR_NONE]
|
|
24
|
+
|
|
25
|
+
## Correction context (CORRECTIVE only; omit otherwise)
|
|
26
|
+
|
|
27
|
+
Phase and persisted attempt:
|
|
28
|
+
[PHASE_AND_ROUND]
|
|
29
|
+
|
|
30
|
+
Fix-only diff, exact prior/fixed identities, and fresh covering checks:
|
|
31
|
+
[FIX_INPUTS_OR_READ_REQUIRED_REFERENCE]
|
|
32
|
+
|
|
33
|
+
Selected findings copied verbatim with stable IDs, or concrete check failure:
|
|
34
|
+
[FINDINGS]
|
|
35
|
+
|
|
36
|
+
Initial ticket/aggregate review coverage and prior Spec/Quality verdicts:
|
|
37
|
+
[INITIAL_COVERAGE_AND_PRIOR_VERDICTS]
|
|
38
|
+
|
|
39
|
+
## Hand-back
|
|
40
|
+
|
|
41
|
+
Assigned absolute report destination:
|
|
42
|
+
[REPORT_PATH]
|
|
43
|
+
```
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Aggregate review scope
|
|
2
|
+
|
|
3
|
+
Read for a comprehensive aggregate review before inspecting changes.
|
|
4
|
+
|
|
5
|
+
Cover the entire spec and cross-task integration, including omitted required behavior and parked findings. Read relevant prior findings and controller rulings; preserve stable finding IDs and distinguish ruled findings from new regressions. Apply comprehensive Spec and Quality assessment, including correctness, tests, maintainability, and material behavior-preserving simplifications. Accepted individual tickets do not establish whole-spec coverage.
|
|
6
|
+
|
|
7
|
+
**Complete when:** the report accounts for the whole assigned delivery, cross-task risks, relevant prior rulings, and any coverage limits. Return to the agent's normal report contract; acceptance remains controller-owned.
|
package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/corrective-rounds.md
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Feature correction
|
|
2
|
+
|
|
3
|
+
Parent: K - Correct feature-level work. Enter this workflow for actionable
|
|
4
|
+
feature-level review findings or non-mechanical feature-check failures. A
|
|
5
|
+
finding linked with `--related-ticket` returns to normal ticket work after the
|
|
6
|
+
review batch reopens that ticket.
|
|
7
|
+
|
|
8
|
+
Before acting on a chart node, announce
|
|
9
|
+
`Step K.<node ID> - Correct feature-level work / <node label>`, including
|
|
10
|
+
initial entries, resumed steps, and loop re-entries. After each decision, state
|
|
11
|
+
its result and selected branch before entering the target node.
|
|
12
|
+
|
|
13
|
+
```mermaid
|
|
14
|
+
flowchart TD
|
|
15
|
+
A[Inspect finding, checks, and correction history] --> B{Further attempt justified?}
|
|
16
|
+
B -- Yes --> C[Record objective and dispatch correction]
|
|
17
|
+
B -- No --> X[Record blocker and pause for adjudication]
|
|
18
|
+
C --> D[Run relevant checks and record outcomes]
|
|
19
|
+
D -- Checks pass --> E[Freeze snapshot and request comprehensive review]
|
|
20
|
+
D -- Checks fail or are blocked --> A
|
|
21
|
+
E --> F{Blocking findings remain?}
|
|
22
|
+
F -- Yes --> A
|
|
23
|
+
F -- No --> Y[Return to the feature finish gate]
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## A. Inspect finding, checks, and correction history
|
|
27
|
+
|
|
28
|
+
Read the finding and its report provenance, current feature state, relevant
|
|
29
|
+
checks, and previous correction attempts. Identify a concrete correction
|
|
30
|
+
objective and the evidence needed to determine whether it is resolved.
|
|
31
|
+
|
|
32
|
+
## B. Further attempt justified?
|
|
33
|
+
|
|
34
|
+
For a first attempt, confirm the finding or check failure is actionable. For
|
|
35
|
+
later attempts, cite verified progress from current checks or review. Repeated
|
|
36
|
+
failures, stalled progress, or requirements disagreement require controller
|
|
37
|
+
adjudication rather than another automatic dispatch.
|
|
38
|
+
|
|
39
|
+
## C. Record objective and dispatch correction
|
|
40
|
+
|
|
41
|
+
Use `spindle sdd correct --scope delivery` to record and dispatch the feature-level
|
|
42
|
+
correction. Preserve prior attempts, reports, and report destinations.
|
|
43
|
+
Serialize implementation edits and keep the assignment limited to the
|
|
44
|
+
recorded objective.
|
|
45
|
+
|
|
46
|
+
## D. Run relevant checks and record outcomes
|
|
47
|
+
|
|
48
|
+
Run appropriate tests and checks against the corrected snapshot. Record actual
|
|
49
|
+
results and limitations. Do not claim stale evidence covers changed code or
|
|
50
|
+
requirements.
|
|
51
|
+
|
|
52
|
+
## E. Freeze snapshot and request comprehensive review
|
|
53
|
+
|
|
54
|
+
After checks pass, freeze implementation edits and request a new comprehensive
|
|
55
|
+
feature review against the corrected snapshot. Submit each assigned report
|
|
56
|
+
against its exact assignment.
|
|
57
|
+
|
|
58
|
+
## X. Record blocker and pause for adjudication
|
|
59
|
+
|
|
60
|
+
Preserve working changes, reports, findings, attempts, and evidence. State the
|
|
61
|
+
remaining blocker or requirement decision needed; do not dispatch another
|
|
62
|
+
correction until it is resolved.
|
|
63
|
+
|
|
64
|
+
## Y. Return to the feature finish gate
|
|
65
|
+
|
|
66
|
+
Record the resolved findings and current check/review evidence. Resume the
|
|
67
|
+
parent with `Step K - Correct feature-level work`, then continue at
|
|
68
|
+
`Step L - Finish gates pass?`. If adjudication was required at X, resume at
|
|
69
|
+
`Step K.B - Correct feature-level work / Further attempt justified?` only after
|
|
70
|
+
the blocker or decision is resolved. TDD is optional; tests appropriate to the
|
|
71
|
+
change remain expected, and verification evidence must be recorded before
|
|
72
|
+
completion.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Example feature workflow
|
|
2
|
+
|
|
3
|
+
This example shows a small feature with two dependent tickets. The ticket
|
|
4
|
+
Markdown holds requirements and acceptance criteria; `sdd.json` holds tracker
|
|
5
|
+
status and dependencies.
|
|
6
|
+
|
|
7
|
+
1. Create a feature workspace and split independent work into tickets:
|
|
8
|
+
`spindle sdd create`, then `spindle sdd ticket create` for each ticket.
|
|
9
|
+
2. Record the dependency with
|
|
10
|
+
`spindle sdd ticket update --ticket T-0002 --blocked-by T-0001`. Check `spindle sdd ready`:
|
|
11
|
+
the prerequisite is ready and the dependent ticket is not.
|
|
12
|
+
3. Claim and implement `T-0001`, submit its report, run and record relevant
|
|
13
|
+
checks, then close it with `spindle sdd ticket update --status closed`.
|
|
14
|
+
4. `T-0002` becomes ready because its dependency is closed. Implement and
|
|
15
|
+
verify it in the same way, then close it.
|
|
16
|
+
5. Record current feature-level required checks and request the comprehensive
|
|
17
|
+
review with `spindle sdd review --scope delivery`. Add only justified specialists.
|
|
18
|
+
6. Submit every assigned report. Register findings from their report and
|
|
19
|
+
snapshot. A blocking finding can reopen its related ticket; complete the
|
|
20
|
+
correction, close the ticket again, and refresh stale checks and review.
|
|
21
|
+
7. Finish when every ticket is closed, all required checks and reviews pass on
|
|
22
|
+
the current feature snapshot, and no delivery blockers remain.
|
|
23
|
+
|
|
24
|
+
Use the normal Git workflow for code. There is no per-ticket accept or
|
|
25
|
+
integration step; the SDD CLI does not stage or commit changes.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# Feature delivery
|
|
2
|
+
|
|
3
|
+
Feature delivery is the completion gate for one feature workspace. It begins
|
|
4
|
+
after every ticket is closed; it does not replace ticket-level implementation or
|
|
5
|
+
acceptance criteria. Use `--scope delivery` instead of `--ticket` for feature
|
|
6
|
+
checks, review assignments, findings, and corrections.
|
|
7
|
+
|
|
8
|
+
## Checks and review
|
|
9
|
+
|
|
10
|
+
Inspect `spindle sdd status --spec <spec>` and `spindle sdd next --spec <spec>`. Establish
|
|
11
|
+
required final checks with `spindle sdd checks require --scope delivery`, run them, and
|
|
12
|
+
record actual results against the returned snapshot. Then dispatch the
|
|
13
|
+
comprehensive review with
|
|
14
|
+
`spindle sdd review --scope delivery --inventory <json-array>`. Its inventory must
|
|
15
|
+
cover the feature's current Git-derived changes.
|
|
16
|
+
|
|
17
|
+
The `sdd-reviewer` is the default comprehensive reviewer. Before dispatch,
|
|
18
|
+
record any justified specialist with
|
|
19
|
+
`spindle sdd review require --scope delivery --type <agent-name> --details <objective>`.
|
|
20
|
+
Only catalog agents with `canReview: true` are eligible. Confirm that the
|
|
21
|
+
controller can actually dispatch each selected agent; catalog eligibility does
|
|
22
|
+
not guarantee harness access.
|
|
23
|
+
|
|
24
|
+
Preserve each assignment's ID, objective, snapshot, inventory, and report
|
|
25
|
+
path. Submit every report against its exact assignment. A missing, pending,
|
|
26
|
+
failed, unavailable, stale, or mismatched review blocks completion.
|
|
27
|
+
|
|
28
|
+
## Findings and correction
|
|
29
|
+
|
|
30
|
+
Register findings from their assigned reports and snapshots with
|
|
31
|
+
`spindle sdd finding create --scope delivery`. Delivery findings have feature-scoped
|
|
32
|
+
IDs, provenance, ruling history, and status. Use `--related-ticket <id>` for a
|
|
33
|
+
finding that should return work to a specific ticket. A blocking linked finding
|
|
34
|
+
reopens its ticket after the complete review batch is submitted; dependent
|
|
35
|
+
tickets remain blocked until that ticket is closed again.
|
|
36
|
+
|
|
37
|
+
Use `spindle sdd finding update --scope delivery` for explicit rulings. Deferring a
|
|
38
|
+
blocker requires rationale, a follow-up reference, and an approved delivery
|
|
39
|
+
requirements decision. Record that decision with
|
|
40
|
+
`spindle sdd requirements decide --scope delivery` only after a requirements change
|
|
41
|
+
and completed prior review. Approval invalidates earlier aggregate assignments.
|
|
42
|
+
|
|
43
|
+
For actionable feature findings, follow [feature correction](./corrective-rounds.md)
|
|
44
|
+
and use `spindle sdd correct --scope delivery` to record
|
|
45
|
+
each independent correction attempt. Record passing checks against the changed
|
|
46
|
+
feature snapshot and submit the implementation report before requesting a new
|
|
47
|
+
feature review. Pause unproductive work, recurring failures, or requirements
|
|
48
|
+
disagreement for adjudication. Resume with `spindle sdd resume --scope delivery`;
|
|
49
|
+
preserve existing assignments, attempts, evidence, and adjudication.
|
|
50
|
+
|
|
51
|
+
## Finish
|
|
52
|
+
|
|
53
|
+
Use the normal Git workflow for code changes. SDD does not stage, commit,
|
|
54
|
+
publish, or require a per-ticket integration confirmation. A changed code or
|
|
55
|
+
requirements snapshot invalidates evidence that no longer covers it.
|
|
56
|
+
|
|
57
|
+
Legacy feature workspaces without a recorded Git baseline stay blocked until
|
|
58
|
+
the original comparison baseline is identified. Do not silently use the
|
|
59
|
+
current `HEAD` after implementation; that could omit completed feature work
|
|
60
|
+
from review.
|
|
61
|
+
|
|
62
|
+
Finish with `spindle sdd finish --spec <spec> --author <author>`. Completion requires
|
|
63
|
+
at least one ticket, every ticket closed, current passing required feature
|
|
64
|
+
checks and reviews, and no unresolved delivery blockers. The retrospective
|
|
65
|
+
policy is stored at feature creation: when required, attach a Markdown report
|
|
66
|
+
with `--report`; otherwise it is optional. Any report must remain inside that
|
|
67
|
+
feature's `reports/` directory.
|
|
68
|
+
|
|
69
|
+
Use `spindle sdd status`, `spindle sdd next`, and
|
|
70
|
+
`spindle sdd resume --scope delivery` to inspect blockers and
|
|
71
|
+
restore interrupted feature-level work. These commands do not close tickets or
|
|
72
|
+
publish changes.
|
package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/implementer-corrections.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Corrective implementation inputs
|
|
2
|
+
|
|
3
|
+
Read only for a corrective implementation assignment, before accepting its gate.
|
|
4
|
+
|
|
5
|
+
Require a concrete `SCOPE` (`ticket` or `delivery`), `ROUND`, and assigned `FINDING_IDS`, plus `PRIOR_ATTEMPTS` and `RULINGS` supplied or explicitly `NONE`. Initial assignments do not require these fields. Accept values through an explicit, read-required correction-context reference or inline equivalent structured fields. Ticket 08 establishes this contract for ticket scope. Ticket 10 introduces delivery-scoped operations and must reuse the contract with independent delivery attempts, rulings, and evidence; until then the current CLI accepts ticket scope only.
|
|
6
|
+
|
|
7
|
+
Read every assigned finding and relevant prior attempt/ruling before editing. Resume the supplied snapshot and test status; the controller owns progress assessments and dispatch decisions. Correct the complete assigned batch within file scope and verify fresh covering tests. Preserve prior report history; attempt numbers are not a fixed retry allowance.
|
|
8
|
+
|
|
9
|
+
**Complete when:** all branch inputs are supplied and consistent; otherwise return `NEEDS_CONTEXT` with specific missing inputs before creating a report. After fixing, include each finding's correction and current covering-test evidence in the implementer report.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Review inputs
|
|
2
|
+
|
|
3
|
+
Read when preparing or accepting a review assignment. The controller supplies these inputs once per frozen review batch; all reviewers consume the same change and verification identity. A durable review-package reference is a transport for existing inputs, not a new artifact generator or a replacement for provenance.
|
|
4
|
+
|
|
5
|
+
## Common input contract
|
|
6
|
+
|
|
7
|
+
`REVIEW_INPUTS` names an absolute, read-required package/manifest path. Read it and its required sources before inspecting the checkout or reviewing. Equivalent structured inputs inline remain valid; preserve supplied values rather than inferring missing revisions from Git.
|
|
8
|
+
|
|
9
|
+
| Input | Required meaning |
|
|
10
|
+
| ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| Requirements | Canonical ticket/spec/comments pointers, applicable instructions, criteria, and constraints. Identify inapplicable sources explicitly. |
|
|
12
|
+
| Workspace and snapshot | Absolute shared checkout; exact reviewed identity, comparison base and head revisions, and included dirty/untracked changes or `NONE`. SHAs are provenance metadata and may live in the package rather than repeated prompt fields. |
|
|
13
|
+
| Complete change | Complete assigned diff with file inventory, stat, and enough context, or approved read-only retrieval using supplied revisions. Include dirty/untracked additions and binary changes, or identify unavailable material as a coverage gap. |
|
|
14
|
+
| Verification | Commands, results, test summary, exact snapshot covered, and unavailable required checks. Evidence pointers are valid; read them before judging coverage. |
|
|
15
|
+
|
|
16
|
+
Keep every meaning authoritative in one place: reference canonical requirements, reports, and evidence rather than copying full logs or the entire ledger. A pointer must identify the required material, not merely say "see ledger". The role-specific assignment supplies phase, objective, history relevant to that role, and its distinct report destination.
|
|
17
|
+
|
|
18
|
+
## Snapshot ownership and completeness
|
|
19
|
+
|
|
20
|
+
The controller owns construction, freezing, and freshness checks. Reuse existing durable complete diffs and evidence; no additional packaging command or hash scheme is required. The identity must distinguish uncommitted/untracked content, not just HEAD. Keep implementation frozen throughout the review batch, allowing assigned report writes without changing the reviewed code identity.
|
|
21
|
+
|
|
22
|
+
Corrections produce a new reviewed identity with fresh covering checks. Preserve the previous package and evidence as history rather than relabeling them as verification of changed code.
|
|
23
|
+
|
|
24
|
+
Reviewers inspect the supplied change and enough matching surrounding code to support their role. Complete supplied diffs take precedence over independently reconstructing Git ranges. Legacy revision-based assignments remain valid: retrieve missing diffs only with approved read-only tooling and supplied revisions, accounting for supplied dirty/untracked changes. Missing or inconsistent inputs require `NEEDS_CONTEXT` before review; required evidence that is stale, failing, or unavailable prevents approval. If surrounding code no longer matches the assigned snapshot, report the mismatch to the controller.
|
|
25
|
+
|
|
26
|
+
**Assignment complete when:** required inputs are resolved and consistent, including a precise review scope and report destination. **Review evidence sufficient when:** the diff covers the assigned change and required passing checks cover that same snapshot. These are distinct gates; supplied claims are not proof of correctness.
|
package/build/Assets/Blueprints/skills/int-subagent-driven-dev/references/verification-evidence.md
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Test and verification handoff
|
|
2
|
+
|
|
3
|
+
The implementer follows repository test guidance and writes or updates tests appropriate to the assigned behavior. SDD does not require test-first sequencing or proof of an initial failure.
|
|
4
|
+
|
|
5
|
+
The report records relevant commands and results, the tested snapshot, failures, and checks not run. Distinguish evidence run by the implementer from evidence supplied by the controller. Formatting, lint, type checks, and ticket-wide regression checks belong to the controller unless explicitly assigned to the worker.
|
|
6
|
+
|
|
7
|
+
On resume, use `int-verification-before-completion` to determine whether evidence is current and sufficient. Missing, stale, ambiguous, or failing required evidence remains unresolved; it is not success-shaped completion.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-test-driven-development
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.2.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Test-Driven Development
|
|
11
|
+
|
|
12
|
+
Reference for TDD sequencing and test quality. Implementers apply the relevant procedure within their assigned workflow; reviewers assess tests and supplied evidence without implementing or starting a TDD cycle. The caller owns task sequencing, permissions, check scheduling, and delivery.
|
|
13
|
+
|
|
14
|
+
Read the relevant glossary and ADRs so test vocabulary and boundaries match the domain.
|
|
15
|
+
|
|
16
|
+
## Behavior and seam
|
|
17
|
+
|
|
18
|
+
A test observes behavior through the module's interface at a **seam**. Reuse confirmed seams recorded in the assignment when unchanged. For missing or changed seams, propose the interface and what it catches and misses; obtain confirmation before writing tests there. Dispatched workers request clarification or approval through the controller; otherwise ask the user.
|
|
19
|
+
|
|
20
|
+
Testing is ready when the expected behavior is clear and the seam has applicable confirmation. Work stays within the assigned scope.
|
|
21
|
+
|
|
22
|
+
## Behavior changes and bug fixes
|
|
23
|
+
|
|
24
|
+
1. **Write a cohesive test batch** at the agreed seam. Group one operation's happy path, validation, and edge cases; keep each test focused on one behavior and unrelated operations in separate batches. Use behavior cohesion, not an arbitrary test count, to bound the batch.
|
|
25
|
+
2. **Verify RED together.** Run the batch in one approved runner invocation and confirm an intended behavioral failure for every new test before implementation. A nonzero exit alone is insufficient. Repair setup errors before evaluating RED. If a test passes, investigate existing behavior or an insensitive test; never delete working code to manufacture failure. If the runner skips tests or stops early, obtain the missing RED evidence before proceeding.
|
|
26
|
+
3. **Implement minimally.** Change only what satisfies the current behavior group.
|
|
27
|
+
4. **Verify GREEN together.** Run the batch and relevant regression tests, combining related selectors in one approved runner invocation where supported; correct failures before the next batch. Use individual runs only when needed to diagnose failures or establish missing evidence.
|
|
28
|
+
|
|
29
|
+
Work in cohesive vertical slices: reach GREEN for the current behavior group before starting the next unrelated group. Do not default to a separate RED/GREEN cycle for each test. Each requested behavior needs coverage, with relevant tests passing on the final implementation.
|
|
30
|
+
|
|
31
|
+
## Pure refactors
|
|
32
|
+
|
|
33
|
+
Start from passing relevant tests, make the structural change, then rerun those same tests. No RED phase is required. Reuse adequate coverage; if it cannot protect the affected behavior, add passing characterization coverage within the assigned scope before refactoring. Preserve behavioral assertions; fix regressions rather than weakening them. Observable behavior changes take the RED → GREEN path.
|
|
34
|
+
|
|
35
|
+
Keep small necessary local refactors after GREEN; substantial cleanup requires a review finding or explicit refactoring ticket.
|
|
36
|
+
|
|
37
|
+
Relevant tests must pass again and the diff must preserve tested behavior.
|
|
38
|
+
|
|
39
|
+
## Test quality
|
|
40
|
+
|
|
41
|
+
- Assert public behavior, not private methods or internal collaborator calls.
|
|
42
|
+
- Derive expected values independently from the spec, a known-good literal, or a worked example, not the production algorithm.
|
|
43
|
+
- Keep tests meaningful through behavior-preserving structural changes.
|
|
44
|
+
|
|
45
|
+
When adding or changing tests, or reviewing their quality, read [Writing good tests](./references/tests.md). When choosing or assessing test doubles, read [Mocking and test doubles](./references/mocking.md).
|
|
46
|
+
|
|
47
|
+
## Review and test evidence
|
|
48
|
+
|
|
49
|
+
Assess behavioral coverage and available RED/GREEN evidence within the review assignment. A concise test summary and fresh GREEN results suffice; missing archived RED logs alone do not block approval. Current GREEN establishes present behavior, not historical test order. Disclose a skipped test-first step honestly; preserve working code rather than manufacturing historical RED.
|
|
50
|
+
|
|
51
|
+
Use the `int-verification-before-completion` skill for evidence attribution, scope, freshness, and completion claims. The caller defines required checks and their authorized owner; this reference does not schedule checks or grant permission to run them.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Mocking and Test Doubles
|
|
2
|
+
|
|
3
|
+
A test double replaces a real dependency to isolate behavior or control an external effect. Use one when it makes a test more reliable or focused—not merely because the dependency is present.
|
|
4
|
+
|
|
5
|
+
## Prefer real application components when practical
|
|
6
|
+
|
|
7
|
+
Use real code for the behavior under test and its ordinary collaborators when that keeps the test fast and reliable. Prefer a test database over mocking database queries when testing persistence.
|
|
8
|
+
|
|
9
|
+
Use a mock, fake, or stub when a dependency is external, slow, nondeterministic, expensive, or needs to produce a controlled failure. Examples include an external API, email provider, clock, or random-number source.
|
|
10
|
+
|
|
11
|
+
## Double the boundary, not the behavior under test
|
|
12
|
+
|
|
13
|
+
Keep the component being tested real. Replace only the dependency that needs isolation, and preserve any real side effects the test relies on.
|
|
14
|
+
|
|
15
|
+
Before replacing a dependency, understand what the real operation does. A mock that skips a required write, state change, or callback can make a test pass while the application behavior is broken.
|
|
16
|
+
|
|
17
|
+
When testing an interaction with an external system, assert the interaction if it is part of the contract—for example, that the application sends the expected amount to a payment provider. Do not assert calls, counts, or ordering merely because the test can observe them.
|
|
18
|
+
|
|
19
|
+
## Keep test doubles realistic
|
|
20
|
+
|
|
21
|
+
Give doubles behavior and data that match the dependency's documented contract. Include the fields downstream code relies on, and use separate setups for meaningfully different outcomes such as success, failure, or malformed data.
|
|
22
|
+
|
|
23
|
+
Avoid generic doubles that accept any input or return a success-shaped default. They can hide incorrect arguments and unhandled error cases.
|
|
24
|
+
|
|
25
|
+
## Prefer simpler tests over elaborate mocks
|
|
26
|
+
|
|
27
|
+
If a test needs many mocks, conditional mock behavior, or complicated setup, consider whether an integration test with real components would be clearer and more reliable.
|
|
28
|
+
|
|
29
|
+
Use dependency injection or a small adapter when it naturally isolates an external boundary. Do not complicate production design solely to make internal collaborators easier to mock.
|
|
30
|
+
|
|
31
|
+
Test-only setup and cleanup belong in test helpers. Keep production classes responsible for production behavior and lifecycle.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Writing Good Tests
|
|
2
|
+
|
|
3
|
+
A useful test catches a plausible bug in behavior that matters. It should describe a contract clearly enough that someone can understand what would break if it failed.
|
|
4
|
+
|
|
5
|
+
## Name the behavior the test protects
|
|
6
|
+
|
|
7
|
+
Before writing a test, ask: **What realistic production change should make this test fail?**
|
|
8
|
+
|
|
9
|
+
Good candidates include a wrong branch, missing validation, incorrect result, or missing side effect. Test behavior callers rely on—not a particular implementation choice.
|
|
10
|
+
|
|
11
|
+
Prefer a test name that describes the behavior:
|
|
12
|
+
|
|
13
|
+
The examples below are pseudocode.
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
TEST "rejects an expired invitation"
|
|
17
|
+
invitation = expired invitation fixture
|
|
18
|
+
ASSERT accepting invitation rejects it as expired
|
|
19
|
+
END TEST
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Avoid names that merely describe the code under test:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
TEST "calls validateInvitation"
|
|
26
|
+
accept invitation
|
|
27
|
+
ASSERT validateInvitation was called
|
|
28
|
+
END TEST
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Choose an appropriate boundary
|
|
32
|
+
|
|
33
|
+
Test through the interface that best demonstrates the contract:
|
|
34
|
+
|
|
35
|
+
- Use a unit test for focused logic with a clear input and output.
|
|
36
|
+
- Use an integration test when behavior depends on collaborating components, persistence, or framework wiring.
|
|
37
|
+
- Use an end-to-end test when the user-visible flow itself needs verification.
|
|
38
|
+
|
|
39
|
+
Prefer public interfaces over private methods or implementation details. A database assertion can be appropriate when persistence is part of the behavior being tested; avoid querying storage merely to inspect internal details unrelated to the contract.
|
|
40
|
+
|
|
41
|
+
Test behavior owned by this application, not framework mechanics that the framework itself guarantees. If an upstream behavior is surprising and important to rely on, a narrow characterization test can document that assumption.
|
|
42
|
+
|
|
43
|
+
## Keep expectations independent
|
|
44
|
+
|
|
45
|
+
Expected values should come from the requirement, a known result, or a hand-checked fixture—not from the code under test or the same logic it uses.
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
TEST "totals item prices"
|
|
49
|
+
items = two items priced 10 and 5
|
|
50
|
+
ASSERT calculateTotal(items) EQUALS 15
|
|
51
|
+
END TEST
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Avoid calculating the expected result with the same algorithm as the implementation. That can let the same mistake appear on both sides of the assertion.
|
|
55
|
+
|
|
56
|
+
## Keep each test focused
|
|
57
|
+
|
|
58
|
+
A test should explain one behavior. It may need several assertions to describe that behavior fully; split it when the assertions cover distinct outcomes or unrelated responsibilities.
|
|
59
|
+
|
|
60
|
+
Use small, meaningful fixtures. Include the fields and relationships the real contract requires, and choose values that make incorrect behavior visible.
|
|
61
|
+
|
|
62
|
+
Cover important alternate paths and boundaries, such as invalid, empty, unauthorized, or missing input when those cases matter to the contract. Do not add a test for every function or line just to mirror the implementation.
|
|
63
|
+
|
|
64
|
+
## Check that the test can catch a bug
|
|
65
|
+
|
|
66
|
+
Before finishing, consider a plausible incorrect change: a missing validation, wrong return value, omitted state change, or incorrect branch. Would this test fail?
|
|
67
|
+
|
|
68
|
+
If not, strengthen the test around the behavior that matters. Avoid tests that only prove a constant, mock, private structure, or source text has a particular shape.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-testing-agent-guidance
|
|
3
|
+
metadata:
|
|
4
|
+
spindle:
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
description: "{{ computed.internal_skill_description }}"
|
|
7
|
+
user-invocable: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Testing Agent Guidance
|
|
11
|
+
|
|
12
|
+
Test guidance by applying it to realistic tasks. Reading or reviewing a document alone does not show that an agent can follow it.
|
|
13
|
+
|
|
14
|
+
## Core workflow
|
|
15
|
+
|
|
16
|
+
Use this workflow for behavior-shaping changes to skills, agents, prompts, instructions, and documents reached by their pointers. For purely editorial changes, preserve the existing behavior and verify that meaning and references remain intact.
|
|
17
|
+
|
|
18
|
+
1. **Define the behavior.** Identify the intended agent action and a checkable pass criterion. Choose an application, retrieval, or decision scenario that exercises the actual requirement.
|
|
19
|
+
2. **Run the baseline before editing.** For a new document, run the scenario without the proposed guidance. For an edit, run it against the current version. Include the relevant task context, ask the agent to act rather than recite rules, and record its response. If the baseline meets the criterion, leave that behavior unchanged.
|
|
20
|
+
3. **Make the smallest change.** Address the observed gap and keep each rule in one authoritative place. Do not add defenses for failures the baseline did not reveal.
|
|
21
|
+
4. **Rerun the same scenario.** Use a fresh context with the full revised guidance and unchanged prompt and pass criterion. Check the observed actions or result, not just the agent's explanation.
|
|
22
|
+
5. **Close observed gaps.** If the retest fails or reveals a new rationalization, make a targeted correction and rerun the same scenario. Complete when the criterion passes and no observed failure remains unresolved.
|
|
23
|
+
|
|
24
|
+
| Guidance behavior | Scenario | Pass criterion |
|
|
25
|
+
| ------------------------- | ------------------------------------------------ | --------------------------------------------------------------------- |
|
|
26
|
+
| Retrieval or reference | Ask for a relevant fact, then apply it | The agent finds and correctly uses the fact |
|
|
27
|
+
| Technique or process | Give a concrete task with a meaningful variation | The agent follows the process and reaches the intended result |
|
|
28
|
+
| Decision or pattern | Give a case and a counterexample | The agent chooses the right branch in both |
|
|
29
|
+
| Discipline under pressure | Present a realistic temptation to skip a rule | The agent takes the required action and does not rationalize a bypass |
|
|
30
|
+
|
|
31
|
+
**Complete when:** the same frozen scenario passes against the revised guidance, or the remaining failure and validation limit are reported.
|
|
32
|
+
|
|
33
|
+
## Expanded testing
|
|
34
|
+
|
|
35
|
+
Use expanded testing when the user requests it or the skill is invoked with `--test`. This adds independent samples; it does not replace the core baseline and retest.
|
|
36
|
+
|
|
37
|
+
1. Freeze scenario prompts and observable pass criteria before dispatch. Cover each meaningful branch. For discipline-enforcing guidance, use at least three scenarios, each combining at least three pressures such as deadline, authority, sunk cost, or exhaustion.
|
|
38
|
+
2. Run five independent read-only agents against the baseline. For a new document, provide no proposed guidance; for an edit, provide the current version. Each agent runs every scenario once and reports its concrete choices and rationalizations verbatim.
|
|
39
|
+
3. The authoring agent alone edits the guidance, addressing only observed failures.
|
|
40
|
+
4. Retest the same scenarios and criteria with five new read-only agents, each running every scenario once with the full revised guidance. Inspect results for compliance and new rationalizations; quoted examples are not evidence of compliance.
|
|
41
|
+
5. Repeat with new agents after targeted corrections. Stop when all five pass every applicable criterion without new rationalizations. If testing is blocked or any criterion still fails, report that limitation rather than claiming validation.
|
|
42
|
+
|
|
43
|
+
**Complete when:** the expanded batch meets every pass criterion, or remaining failures and blocked requirements are explicit.
|
|
44
|
+
|
|
45
|
+
## Scenario quality
|
|
46
|
+
|
|
47
|
+
- Give the agent a real task and the complete relevant context.
|
|
48
|
+
- Make the expected action observable; use concrete options when a decision must be forced.
|
|
49
|
+
- Use realistic pressures only when testing resistance to bypass.
|
|
50
|
+
- Freeze prompts and criteria before the baseline so the retest remains comparable.
|
|
51
|
+
- Separate scenarios into fresh contexts when one result could influence another.
|
|
52
|
+
|
|
53
|
+
Use the `int-writing-for-agents` skill for document structure and context-pointer principles. This skill defines how to test the resulting guidance; it does not replace artifact-specific authoring requirements.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-verification-before-completion
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.1.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Verification Before Completion
|
|
11
|
+
|
|
12
|
+
Use this reference when reporting verification or completion claims. The caller's workflow defines required checks, permissions, and timing; this skill defines how claims track evidence.
|
|
13
|
+
|
|
14
|
+
## Match claims to evidence
|
|
15
|
+
|
|
16
|
+
- Identify the claim's scope: for example, a focused test, a build, a behavior, or a set of requirements.
|
|
17
|
+
- Say whether evidence was **run** by you, **inspected**, or **supplied** by someone else. Attribute supplied evidence; don't imply you ran it.
|
|
18
|
+
- Include the observed result and the evidence's scope. Tie it to the relevant commit or snapshot when one is identified.
|
|
19
|
+
- Claim only what the evidence establishes. A focused test does not establish that the full suite passes; passing tests do not establish that a build or all requirements pass.
|
|
20
|
+
- If required evidence is missing, stale, ambiguous, or failing, state what remains unverified and identify the check and authorized owner needed to resolve it.
|
|
21
|
+
- Respect the caller's permissions and approved tooling. Request evidence from the authorized owner when you cannot run a required check.
|
|
22
|
+
|
|
23
|
+
## Example
|
|
24
|
+
|
|
25
|
+
> Controller-supplied evidence: `pnpm test --filter order-total` exited 0 with 12 tests passing on snapshot `abc123`; I did not run it. The full production build is unverified; request controller evidence for `abc123`.
|