@use-the-fork/spindle 0.0.0-stage → 0.0.2
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,220 @@
|
|
|
1
|
+
# Persuasion Principles for Skill Design
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
LLMs respond to the same persuasion principles as humans. Understanding this psychology helps you design more effective skills - not to manipulate, but to ensure critical practices are followed even under pressure.
|
|
6
|
+
|
|
7
|
+
**Research foundation:** Meincke et al. (2025) tested 7 persuasion principles with N=28,000 AI conversations. Persuasion techniques more than doubled compliance rates (33% → 72%, p < .001).
|
|
8
|
+
|
|
9
|
+
## The Seven Principles
|
|
10
|
+
|
|
11
|
+
### 1. Authority
|
|
12
|
+
|
|
13
|
+
**What it is:** Deference to expertise, credentials, or official sources.
|
|
14
|
+
|
|
15
|
+
**How it works in skills:**
|
|
16
|
+
|
|
17
|
+
- Imperative language: "YOU MUST", "Never", "Always"
|
|
18
|
+
- Non-negotiable framing: "No exceptions"
|
|
19
|
+
- Eliminates decision fatigue and rationalization
|
|
20
|
+
|
|
21
|
+
**When to use:**
|
|
22
|
+
|
|
23
|
+
- Discipline-enforcing skills (TDD, verification requirements)
|
|
24
|
+
- Safety-critical practices
|
|
25
|
+
- Established best practices
|
|
26
|
+
|
|
27
|
+
**Example:**
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
✅ Write code before test? Delete it. Start over. No exceptions.
|
|
31
|
+
❌ Consider writing tests first when feasible.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### 2. Commitment
|
|
35
|
+
|
|
36
|
+
**What it is:** Consistency with prior actions, statements, or public declarations.
|
|
37
|
+
|
|
38
|
+
**How it works in skills:**
|
|
39
|
+
|
|
40
|
+
- Require announcements: "Announce skill usage"
|
|
41
|
+
- Force explicit choices: "Choose A, B, or C"
|
|
42
|
+
- Use tracking: todos for checklists
|
|
43
|
+
|
|
44
|
+
**When to use:**
|
|
45
|
+
|
|
46
|
+
- Ensuring skills are actually followed
|
|
47
|
+
- Multi-step processes
|
|
48
|
+
- Accountability mechanisms
|
|
49
|
+
|
|
50
|
+
**Example:**
|
|
51
|
+
|
|
52
|
+
```markdown
|
|
53
|
+
✅ When you find a skill, you MUST announce: "I'm using [Skill Name]"
|
|
54
|
+
❌ Consider letting your partner know which skill you're using.
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
### 3. Scarcity
|
|
58
|
+
|
|
59
|
+
**What it is:** Urgency from time limits or limited availability.
|
|
60
|
+
|
|
61
|
+
**How it works in skills:**
|
|
62
|
+
|
|
63
|
+
- Time-bound requirements: "Before proceeding"
|
|
64
|
+
- Sequential dependencies: "Immediately after X"
|
|
65
|
+
- Prevents procrastination
|
|
66
|
+
|
|
67
|
+
**When to use:**
|
|
68
|
+
|
|
69
|
+
- Immediate verification requirements
|
|
70
|
+
- Time-sensitive workflows
|
|
71
|
+
- Preventing "I'll do it later"
|
|
72
|
+
|
|
73
|
+
**Example:**
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
✅ After completing a task, IMMEDIATELY request code review before proceeding.
|
|
77
|
+
❌ You can review code when convenient.
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 4. Social Proof
|
|
81
|
+
|
|
82
|
+
**What it is:** Conformity to what others do or what's considered normal.
|
|
83
|
+
|
|
84
|
+
**How it works in skills:**
|
|
85
|
+
|
|
86
|
+
- Universal patterns: "Every time", "Always"
|
|
87
|
+
- Failure modes: "X without Y = failure"
|
|
88
|
+
- Establishes norms
|
|
89
|
+
|
|
90
|
+
**When to use:**
|
|
91
|
+
|
|
92
|
+
- Documenting universal practices
|
|
93
|
+
- Warning about common failures
|
|
94
|
+
- Reinforcing standards
|
|
95
|
+
|
|
96
|
+
**Example:**
|
|
97
|
+
|
|
98
|
+
```markdown
|
|
99
|
+
✅ Checklists without todo tracking = steps get skipped. Every time.
|
|
100
|
+
❌ Some people find a todo list helpful for checklists.
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 5. Unity
|
|
104
|
+
|
|
105
|
+
**What it is:** Shared identity, "we-ness", in-group belonging.
|
|
106
|
+
|
|
107
|
+
**How it works in skills:**
|
|
108
|
+
|
|
109
|
+
- Collaborative language: "our codebase", "we're colleagues"
|
|
110
|
+
- Shared goals: "we both want quality"
|
|
111
|
+
|
|
112
|
+
**When to use:**
|
|
113
|
+
|
|
114
|
+
- Collaborative workflows
|
|
115
|
+
- Establishing team culture
|
|
116
|
+
- Non-hierarchical practices
|
|
117
|
+
|
|
118
|
+
**Example:**
|
|
119
|
+
|
|
120
|
+
```markdown
|
|
121
|
+
✅ We're colleagues working together. I need your honest technical judgment.
|
|
122
|
+
❌ You should probably tell me if I'm wrong.
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 6. Reciprocity
|
|
126
|
+
|
|
127
|
+
**What it is:** Obligation to return benefits received.
|
|
128
|
+
|
|
129
|
+
**How it works:**
|
|
130
|
+
|
|
131
|
+
- Use sparingly - can feel manipulative
|
|
132
|
+
- Rarely needed in skills
|
|
133
|
+
|
|
134
|
+
**When to avoid:**
|
|
135
|
+
|
|
136
|
+
- Almost always (other principles more effective)
|
|
137
|
+
|
|
138
|
+
### 7. Liking
|
|
139
|
+
|
|
140
|
+
**What it is:** Preference for cooperating with those we like.
|
|
141
|
+
|
|
142
|
+
**How it works:**
|
|
143
|
+
|
|
144
|
+
- **DON'T USE for compliance**
|
|
145
|
+
- Conflicts with honest feedback culture
|
|
146
|
+
- Creates sycophancy
|
|
147
|
+
|
|
148
|
+
**When to avoid:**
|
|
149
|
+
|
|
150
|
+
- Always for discipline enforcement
|
|
151
|
+
|
|
152
|
+
## Principle Combinations by Skill Type
|
|
153
|
+
|
|
154
|
+
| Skill Type | Use | Avoid |
|
|
155
|
+
| -------------------- | ------------------------------------- | ------------------- |
|
|
156
|
+
| Discipline-enforcing | Authority + Commitment + Social Proof | Liking, Reciprocity |
|
|
157
|
+
| Guidance/technique | Moderate Authority + Unity | Heavy authority |
|
|
158
|
+
| Collaborative | Unity + Commitment | Authority, Liking |
|
|
159
|
+
| Reference | Clarity only | All persuasion |
|
|
160
|
+
|
|
161
|
+
## Why This Works: The Psychology
|
|
162
|
+
|
|
163
|
+
**Bright-line rules reduce rationalization:**
|
|
164
|
+
|
|
165
|
+
- "YOU MUST" removes decision fatigue
|
|
166
|
+
- Absolute language eliminates "is this an exception?" questions
|
|
167
|
+
- Explicit anti-rationalization counters close specific loopholes
|
|
168
|
+
|
|
169
|
+
**Implementation intentions create automatic behavior:**
|
|
170
|
+
|
|
171
|
+
- Clear triggers + required actions = automatic execution
|
|
172
|
+
- "When X, do Y" more effective than "generally do Y"
|
|
173
|
+
- Reduces cognitive load on compliance
|
|
174
|
+
|
|
175
|
+
**LLMs are parahuman:**
|
|
176
|
+
|
|
177
|
+
- Trained on human text containing these patterns
|
|
178
|
+
- Authority language precedes compliance in training data
|
|
179
|
+
- Commitment sequences (statement → action) frequently modeled
|
|
180
|
+
- Social proof patterns (everyone does X) establish norms
|
|
181
|
+
|
|
182
|
+
## Ethical Use
|
|
183
|
+
|
|
184
|
+
**Legitimate:**
|
|
185
|
+
|
|
186
|
+
- Ensuring critical practices are followed
|
|
187
|
+
- Creating effective documentation
|
|
188
|
+
- Preventing predictable failures
|
|
189
|
+
|
|
190
|
+
**Illegitimate:**
|
|
191
|
+
|
|
192
|
+
- Manipulating for personal gain
|
|
193
|
+
- Creating false urgency
|
|
194
|
+
- Guilt-based compliance
|
|
195
|
+
|
|
196
|
+
**The test:** Would this technique serve the user's genuine interests if they fully understood it?
|
|
197
|
+
|
|
198
|
+
## Research Citations
|
|
199
|
+
|
|
200
|
+
**Cialdini, R. B. (2021).** _Influence: The Psychology of Persuasion (New and Expanded)._ Harper Business.
|
|
201
|
+
|
|
202
|
+
- Seven principles of persuasion
|
|
203
|
+
- Empirical foundation for influence research
|
|
204
|
+
|
|
205
|
+
**Meincke, L., Shapiro, D., Duckworth, A. L., Mollick, E., Mollick, L., & Cialdini, R. (2025).** Call Me A Jerk: Persuading AI to Comply with Objectionable Requests. University of Pennsylvania.
|
|
206
|
+
|
|
207
|
+
- Tested 7 principles with N=28,000 LLM conversations
|
|
208
|
+
- Compliance increased 33% → 72% with persuasion techniques
|
|
209
|
+
- Authority, commitment, scarcity most effective
|
|
210
|
+
- Validates parahuman model of LLM behavior
|
|
211
|
+
|
|
212
|
+
## Quick Reference
|
|
213
|
+
|
|
214
|
+
When designing a skill, ask:
|
|
215
|
+
|
|
216
|
+
1. **What type is it?** (Discipline vs. guidance vs. reference)
|
|
217
|
+
2. **What behavior am I trying to change?**
|
|
218
|
+
3. **Which principle(s) apply?** (Usually authority + commitment for discipline)
|
|
219
|
+
4. **Am I combining too many?** (Don't use all seven)
|
|
220
|
+
5. **Is this ethical?** (Serves user's genuine interests?)
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Reference skills
|
|
2
|
+
|
|
3
|
+
Use this branch when the skill primarily supplies knowledge for lookup and application: a plugin, library, API, syntax, or reusable concept. Short procedures may support the knowledge without turning it into an end-to-end workflow.
|
|
4
|
+
|
|
5
|
+
## Structure and disclosure
|
|
6
|
+
|
|
7
|
+
For a new skill, load and fill the [Reference template](../assets/reference.md). For an existing skill, apply it only to the relevant edit.
|
|
8
|
+
|
|
9
|
+
- State the covered subject, applicability, and version or environment constraints that affect correctness.
|
|
10
|
+
- Organize by the questions the agent needs to answer. Keep each contract, its constraints, and its caveats together.
|
|
11
|
+
- Keep common facts inline. When a lookup depends on a particular feature or environment, put its detail behind a pointer naming that condition.
|
|
12
|
+
- Supply precise inputs, outputs, error behavior, and compatibility boundaries where relevant. Identify authoritative sources; avoid caching facts cheaply available from the environment.
|
|
13
|
+
- Include one valid, adaptable application example when useful. Clearly distinguish real API syntax from illustrative pseudocode.
|
|
14
|
+
- Add a lookup table or pitfalls only when they improve retrieval rather than repeat the same facts.
|
|
15
|
+
|
|
16
|
+
A Reference skill does not need ordered authoring-style phases, per-topic completion gates, or a flowchart. A focused procedure belongs beside the topic it supports.
|
|
17
|
+
|
|
18
|
+
## Completion
|
|
19
|
+
|
|
20
|
+
The agent can locate and correctly apply the relevant fact, including its constraints and failure behavior, without loading unrelated topics. Use [Testing skills](./testing-skills.md) for a retrieval-and-application scenario that verifies this.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Testing skills
|
|
2
|
+
|
|
3
|
+
Skill-specific scenario selection and failure diagnosis live here. **REQUIRED:** use `int-testing-agent-guidance` for the shared execution procedure, baseline capture, fresh-context retest, and expanded testing. This reference does not replace that procedure.
|
|
4
|
+
|
|
5
|
+
## Select an observable scenario
|
|
6
|
+
|
|
7
|
+
Choose the scenario by primary type, then by the capability it teaches:
|
|
8
|
+
|
|
9
|
+
| Primary type | Capability | Focused scenario | Success criterion |
|
|
10
|
+
| ------------ | ---------- | -------------------------------------------- | -------------------------------------------------------------- |
|
|
11
|
+
| Interactive | Discipline | A realistic choice involving the target rule | The agent takes the required action under pressure |
|
|
12
|
+
| Interactive | Technique | Apply the technique to a concrete variation | Actions and completion criteria are met |
|
|
13
|
+
| Interactive | Pattern | A case and a counterexample | The agent chooses the right branch in both |
|
|
14
|
+
| Reference | Knowledge | Retrieve and apply a relevant fact | The agent finds the fact and correctly applies its constraints |
|
|
15
|
+
|
|
16
|
+
For a structural rewrite, exercise finding the first action and its completion criterion, selecting the correct branch, and loading only its required resources. For a flowchart change, exercise decision results, loop re-entry, and any parent/child hand-off.
|
|
17
|
+
|
|
18
|
+
When arguments are supported, exercise their declared contract: equivalent aliases, omitted optional inputs, required inputs, value validation, conflicting flags, `--`, and task text containing flag-like content. Include explicit caller inputs as well as user invocation when both are supported.
|
|
19
|
+
|
|
20
|
+
Freeze the prompt and observable criterion before the baseline. Use the current guidance for an edit or no guidance for a new skill. Record behavior verbatim; a statement that the rule is understood is not evidence that it is followed.
|
|
21
|
+
|
|
22
|
+
## Diagnose the baseline gap
|
|
23
|
+
|
|
24
|
+
| Observed failure | Guidance form |
|
|
25
|
+
| -------------------------------------- | ------------------------------------------------------ |
|
|
26
|
+
| A known rule is skipped under pressure | A hard rule and counters for observed rationalizations |
|
|
27
|
+
| Output has the wrong shape | A positive recipe or output contract |
|
|
28
|
+
| A required element is omitted | A required field or slot in the structure |
|
|
29
|
+
| Behavior depends on a condition | A conditional keyed to an observable predicate |
|
|
30
|
+
|
|
31
|
+
If the baseline meets the target, leave that behavior unchanged. Limit the edit to the observed gap and requested capability.
|
|
32
|
+
|
|
33
|
+
For discipline-enforcing guidance, consult [Persuasion principles](./persuasion-principles.md) when selecting counters. Apply authority and commitment sparingly; use clarity rather than persuasion for reference material.
|
|
34
|
+
|
|
35
|
+
## Retest and close
|
|
36
|
+
|
|
37
|
+
Rerun the same prompt and criterion with the full revised guidance in a fresh context. Check actual choices, resource loads, and artifacts. Correct remaining failures narrowly, then rerun after each wording change.
|
|
38
|
+
|
|
39
|
+
Run expanded testing only when explicitly requested or when `--test` is present, using `int-testing-agent-guidance`. It adds coverage rather than replacing the focused baseline and retest.
|
|
40
|
+
|
|
41
|
+
| Testing pitfall | Required evidence |
|
|
42
|
+
| --------------------------------------- | --------------------------------------------------------------- |
|
|
43
|
+
| "It is clear" or "it is just reference" | Application or retrieval behavior, not author confidence |
|
|
44
|
+
| "I will test if problems emerge" | Baseline before drafting and retest before delivery |
|
|
45
|
+
| "There is no time" | Recorded validation or an explicit blocker, not claimed success |
|
|
46
|
+
| "The output is close enough" | The unchanged observable criterion passes |
|
|
47
|
+
|
|
48
|
+
**Complete when:** the final focused scenario passes without unresolved failures, requested expanded testing is complete, or remaining failures and validation limits are explicitly reported.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: retrospective
|
|
3
|
+
description: "Assess a coding session and apply individually approved improvements."
|
|
4
|
+
disable-model-invocation: true
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.1.2
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
Assess the selected coding session and help the maintainer improve future runs.
|
|
11
|
+
|
|
12
|
+
## Required skill
|
|
13
|
+
|
|
14
|
+
Before acting, load and follow **REQUIRED:** `int-retrospective`.
|
|
15
|
+
|
|
16
|
+
Identify this invocation as a `maintainer` retrospective in the calling context, forwarding the user's session selection and any proposal-report pointer as task context. With no session selection, the internal skill uses the current session. It owns evidence selection, assessment, approval, application, and verification.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup-project
|
|
3
|
+
description: "Use after spindle init to document project tooling and establish domain glossaries."
|
|
4
|
+
disable-model-invocation: false
|
|
5
|
+
user-invocable: true
|
|
6
|
+
metadata:
|
|
7
|
+
spindle:
|
|
8
|
+
version: 1.5.0
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Setup Project
|
|
12
|
+
|
|
13
|
+
Curate the commands agents should use and establish project domain documentation. Project tooling varies by repository; register only commands that have been inspected and verified. The tooling registry in `.github/spindle.json` is authoritative, and Spindle regenerates `docs/agents/tooling.md` from it. These entries document commands; Spindle does not execute them.
|
|
14
|
+
|
|
15
|
+
## Prerequisite
|
|
16
|
+
|
|
17
|
+
The user must have completed `spindle init` before running this skill. This skill
|
|
18
|
+
does not initialize the project. If the required project guidance or tooling
|
|
19
|
+
registry is missing, report the prerequisite and stop.
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
Announce `Step <node ID> - <node label>` before acting on each node, including resumed steps and loop re-entries. After each decision, state its result and selected branch before entering the target node.
|
|
24
|
+
|
|
25
|
+
```mermaid
|
|
26
|
+
flowchart TD
|
|
27
|
+
B[Explore the project and its conventions] --> C[Update and verify tooling]
|
|
28
|
+
C --> G{Existing project?}
|
|
29
|
+
G -- Yes --> H[Populate domain glossaries]
|
|
30
|
+
G -- No --> I[Report setup outcome]
|
|
31
|
+
H --> I
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### B. Explore the project and its conventions
|
|
35
|
+
|
|
36
|
+
Read `docs/agents/domain.md`, the relevant glossary and ADRs, and existing project guidance. Inspect the repository's package manifests, task runner configuration, and test/build configuration to identify candidate commands. Do not treat discovery as registration: decide which commands are useful to agents and verify their names and argument forms against their configuration.
|
|
37
|
+
|
|
38
|
+
Also inspect the source to determine whether this is an existing project: it contains substantive application or library code, not merely scaffold files or manifests. Ask the user if the evidence is ambiguous.
|
|
39
|
+
|
|
40
|
+
**Complete when:** each candidate command selected for the guide has a verified invocation and a clear documentation section, and the existing-project classification is established, selecting C.
|
|
41
|
+
|
|
42
|
+
### C. Update and verify tooling
|
|
43
|
+
|
|
44
|
+
Load and follow the `update-tooling` skill. Supply the verified candidate commands and relevant configuration paths found in B as explicit context, and request a full registry comparison for initial setup. That skill owns the proposal, explicit approval, revision loop, `spindle tool` registry mutations, and generated-guide verification; do not duplicate or bypass its approval gate.
|
|
45
|
+
|
|
46
|
+
**Complete when:** the delegated workflow has returned with the registry and guide verified, selecting G. If approval is pending, wait; if it reports failures or discrepancies, report the blocker and stop rather than claiming setup is complete.
|
|
47
|
+
|
|
48
|
+
### G. Existing project?
|
|
49
|
+
|
|
50
|
+
Use the classification established in B. Only an existing project with substantive application or library code proceeds to domain modeling. A new project containing only scaffold files or manifests skips it; do not create empty glossary files or invent a domain model.
|
|
51
|
+
|
|
52
|
+
**Complete when:** an existing project selects H or a new project selects I.
|
|
53
|
+
|
|
54
|
+
### H. Populate domain glossaries
|
|
55
|
+
|
|
56
|
+
Load and follow the `int-domain-modeling` skill. Use the existing code and user input to establish domain terms and context boundaries. Resolve ambiguities and conflicts with the user rather than treating implementation names as authoritative terminology. Preserve existing definitions unless a change is agreed, and capture resolved terms as they become clear.
|
|
57
|
+
|
|
58
|
+
For a single context, populate or refine the root `GLOSSARY.md`. For multiple contexts, populate or refine the context glossaries and `GLOSSARY-MAP.md`, including links to the glossaries and the relationships between contexts. Create the map only when multiple contexts are established. Keep glossaries free of implementation details and create files only when there are resolved terms to record.
|
|
59
|
+
|
|
60
|
+
**Complete when:** resolved domain terms are recorded in the appropriate glossaries, multiple established contexts are mapped with valid links, and any unresolved questions are explicitly identified, selecting I.
|
|
61
|
+
|
|
62
|
+
### I. Report setup outcome
|
|
63
|
+
|
|
64
|
+
Summarize tooling changes applied or declined, guide verification, and domain documentation populated or skipped with the reason. Identify unresolved questions or blockers without claiming they are complete.
|
|
65
|
+
|
|
66
|
+
**Complete when:** the user has an accurate setup outcome and any remaining actions.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: to-spec
|
|
3
|
+
description: "Turn an agreed feature request or approved design into a spec in its SDD feature workspace, then publish it to the configured ticket tracker."
|
|
4
|
+
argument-hint: "[design file path]"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
metadata:
|
|
7
|
+
spindle:
|
|
8
|
+
version: 1.1.1
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# To Spec
|
|
12
|
+
|
|
13
|
+
Turn an agreed feature request or an approved design into a codebase-grounded spec, then publish it to the configured ticket tracker. A design is optional; when one exists, it must be completed and approved before the spec, and tickets follow the spec.
|
|
14
|
+
|
|
15
|
+
Use the ticket-tracker conventions in project guidance when available. If tracker or publication status is unclear, ask the user before publishing; do not assume labels or invent status values.
|
|
16
|
+
|
|
17
|
+
## Argument
|
|
18
|
+
|
|
19
|
+
An optional design file path may be supplied. Read the entire file before drafting. Without a path, use the already-agreed requirements in the conversation; do not restart requirements discovery.
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
1. **Select the requirements source.**
|
|
24
|
+
- With a design path, treat that complete design as the requirements source. Older conversation cannot override it; apply only explicit user-requested changes and use other conversation as non-conflicting context.
|
|
25
|
+
- Without a design path, reuse an existing SDD feature workspace from the task context and treat its `design.md`, when present, as the requirements source. If no workspace design exists, use the agreed conversation. Do not require a design or create one automatically.
|
|
26
|
+
- If the supplied path is missing, unreadable, or ambiguous, explain the problem and ask for a corrected reference. Do not fall back to chat.
|
|
27
|
+
- Preserve unresolved decisions as open questions in Further Notes. Resolve gaps that block a ready-for-agent spec before publishing.
|
|
28
|
+
|
|
29
|
+
**Complete when:** the source is unambiguous and every supplied design has been read in full.
|
|
30
|
+
|
|
31
|
+
2. **Select or create the SDD feature workspace.**
|
|
32
|
+
- Reuse the existing numbered `.scratch/<feature-id>-<slug>/` workspace when the selected design or spec belongs to one. Use its `spec.md`; do not create a second workspace for the same feature.
|
|
33
|
+
- Otherwise, derive a concise feature title from the agreed request and choose an author identity for this run. Run `spindle sdd create --title "<feature title>" --author "<author>"`; add `--with-design` when the selected design must be retained in the new workspace. If using a design outside `.scratch`, copy that approved source into the newly created `design.md`, replacing only the fresh template. Save the returned `spec` path and continue in that workspace.
|
|
34
|
+
- When the workspace has `design.md`, read it fully and use it as the requirements source. If it still contains `[PLACEHOLDER]` markers or has not been approved, pause and ask the user to finish or approve the design before drafting the spec.
|
|
35
|
+
- The selected SDD workspace's pre-created `spec.md` is the output. Replace its template content with the completed spec; do not create a dated folder or a second spec.
|
|
36
|
+
|
|
37
|
+
**Complete when:** one numbered SDD feature workspace is selected, its spec path is known, and any present design is complete and approved.
|
|
38
|
+
|
|
39
|
+
3. **Explore and confirm the test seams.**
|
|
40
|
+
- Explore the repo to understand the current state if it has not already been explored. Use the relevant domain glossary and ADRs.
|
|
41
|
+
- Sketch the highest useful seams at which the feature should be tested. Prefer existing seams. If new seams are needed, propose them at the highest practical boundary.
|
|
42
|
+
- Ask the user to confirm the proposed seams before drafting. If the user corrects them, update the seam proposal and confirm the revision.
|
|
43
|
+
|
|
44
|
+
**Complete when:** the codebase context and user-confirmed test seams are recorded.
|
|
45
|
+
|
|
46
|
+
4. **Write and publish the spec.**
|
|
47
|
+
- Fill the sections in the SDD-created `spec.md`: Problem Statement, Solution, User Stories, Implementation Decisions, Testing Decisions, Out of Scope, and Further Notes.
|
|
48
|
+
- Give each important user story a concise, observable acceptance outcome or example scenario focused on user-visible behavior. Leave implementation-slice completion criteria to tickets; no fixed scenario format is required.
|
|
49
|
+
- Use domain glossary terms. Do not include file paths or code snippets unless a prototype captures a decision more clearly than prose.
|
|
50
|
+
- Publish the completed spec according to the configured ticket-tracker guidance. Ask before publishing if the destination or status is unclear.
|
|
51
|
+
- Once the spec is published, ask the user to invoke `/to-tickets` for planning. Do not invoke it automatically or start implementation here.
|
|
52
|
+
|
|
53
|
+
**Complete when:** the spec is published at the feature workspace's `spec.md` path, tracker publication is resolved, and no blocking ambiguity is hidden.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: to-tickets
|
|
3
|
+
description: "Break an approved feature spec into tracer-bullet tickets with explicit blockers, then publish them to the configured ticket tracker."
|
|
4
|
+
argument-hint: "[spec path or tracker reference]"
|
|
5
|
+
disable-model-invocation: true
|
|
6
|
+
metadata:
|
|
7
|
+
spindle:
|
|
8
|
+
version: 1.0.0
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# To Tickets
|
|
12
|
+
|
|
13
|
+
Break an approved feature spec into **tickets**: independently actionable vertical slices with explicit blocking dependencies.
|
|
14
|
+
|
|
15
|
+
An optional argument is one spec path or tracker reference. Read the full spec and its comments before planning. Without an argument, use the approved spec already in context. If the source is missing or ambiguous, ask for a usable reference before proceeding.
|
|
16
|
+
|
|
17
|
+
## Process
|
|
18
|
+
|
|
19
|
+
1. **Select the feature and confirm sequence.**
|
|
20
|
+
- Use the spec's existing feature workspace. In Spindle's local tracker, this is a numbered `.scratch/<feature-id>-<slug>/` directory containing `spec.md`, `sdd.json`, and `tickets/`. Never create a dated folder or a second workspace for the same feature.
|
|
21
|
+
- If `design.md` exists in the feature workspace, read it and confirm it was completed and approved before the spec. If the spec is not approved or a present design is unfinished, stop and resolve that before ticket planning.
|
|
22
|
+
- A design is optional. Do not require or create one when the approved spec was intentionally written without a design.
|
|
23
|
+
- For local SDD tracker work, use the feature's `spec.md` path with `spindle sdd` ticket commands. Otherwise follow the configured tracker's documented conventions.
|
|
24
|
+
|
|
25
|
+
**Complete when:** one approved spec and its tracker destination are identified; any existing design precedes it and is approved.
|
|
26
|
+
|
|
27
|
+
2. **Gather context.** Use the conversation and spec as the requirements source. If the user supplies a tracker reference, read its full body and comments. Explore the codebase when needed, using its glossary vocabulary and relevant ADRs. Look for useful prefactoring that reduces implementation difficulty.
|
|
28
|
+
|
|
29
|
+
**Complete when:** requirements, relevant project context, and tracker rules are understood.
|
|
30
|
+
|
|
31
|
+
3. **Draft vertical slices.** Break the approved work into tracer-bullet tickets:
|
|
32
|
+
- Each slice is a narrow, complete path through the relevant layers and is verifiable on its own.
|
|
33
|
+
- Each slice fits a fresh context window.
|
|
34
|
+
- Identify only genuine blockers and list tickets in dependency order.
|
|
35
|
+
- A wide mechanical refactor may use expand–migrate–contract sequencing when no vertical slice can remain green.
|
|
36
|
+
|
|
37
|
+
**Complete when:** every requirement is covered, each ticket is independently actionable, and blocking relationships are explicit.
|
|
38
|
+
|
|
39
|
+
4. **Get approval.** Present the proposed breakdown as a numbered list. For each ticket, show its title, blockers, and end-to-end behavior. Ask whether the granularity and dependency edges are right and whether anything should be merged or split. Iterate until the user approves. Do not publish before approval.
|
|
40
|
+
|
|
41
|
+
**Complete when:** the user approves the ticket breakdown and blocker relationships.
|
|
42
|
+
|
|
43
|
+
5. **Publish the tickets.**
|
|
44
|
+
- For a local Spindle SDD tracker, create each ticket in dependency order with `spindle sdd ticket create --spec <absolute-spec-path>`. Supply its title, reporter, category (`bug` or `enhancement`), and author. Fill the generated ticket's Requirements and Acceptance Criteria using the tracker guidance. After creation, use `spindle sdd ticket update --spec <absolute-spec-path> --ticket <id> --blocked-by <blocker-ids...> --author <author>` to record each dependency; omit `--blocked-by` when there are no blockers. Keep the approved spec and feature ledger authoritative.
|
|
45
|
+
- For an external ticket tracker, create one ticket per approved ticket in dependency order and use native blocking relationships when available; otherwise record blockers in each ticket. If the source was an existing ticket, create sub-tickets as required by the tracker.
|
|
46
|
+
- Apply a status only when the project documents it or the user requests it. Do not close or modify a parent ticket.
|
|
47
|
+
- Publishing ends here. Tell the user that delivery begins through the project's documented implementation workflow; do not start implementation.
|
|
48
|
+
|
|
49
|
+
**Complete when:** every approved ticket exists in the configured tracker with its acceptance criteria and blockers, and no implementation work has started.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: update-tooling
|
|
3
|
+
description: "Use when tooling commands are added, changed, or removed, or when refreshing the tooling registry and generated guide."
|
|
4
|
+
argument-hint: "[change description or tooling paths]"
|
|
5
|
+
disable-model-invocation: false
|
|
6
|
+
user-invocable: true
|
|
7
|
+
metadata:
|
|
8
|
+
spindle:
|
|
9
|
+
version: 1.1.0
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Update Tooling
|
|
13
|
+
|
|
14
|
+
Keep the tooling registry in `.github/spindle.json` and generated `docs/agents/tooling.md` aligned with verified project commands. These entries document commands; Spindle does not execute them. Do not install tools, change tooling configuration, initialize project guidance, or update glossaries.
|
|
15
|
+
|
|
16
|
+
## Input
|
|
17
|
+
|
|
18
|
+
Optional free-form text identifies the tooling changes or configuration paths to inspect. Treat all supplied text as context, not flags. A calling skill supplies this context explicitly. With no supplied target, compare the full registry against the project's tooling configuration; do not infer a target from unrelated conversation.
|
|
19
|
+
|
|
20
|
+
## Workflow
|
|
21
|
+
|
|
22
|
+
Announce `Step <node ID> - <node label>` before acting on each node, including resumed steps and loop re-entries. After each decision, state its result and selected branch before entering the target node.
|
|
23
|
+
|
|
24
|
+
```mermaid
|
|
25
|
+
flowchart TD
|
|
26
|
+
A[Inspect tooling and registry] --> B[Propose tooling changes]
|
|
27
|
+
B --> C{Changes approved?}
|
|
28
|
+
C -- Revise --> B
|
|
29
|
+
C -- Approve --> D[Apply approved changes]
|
|
30
|
+
C -- Decline or no changes needed --> E[Verify registry and guide]
|
|
31
|
+
D --> E
|
|
32
|
+
E --> F[Report outcome]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### A. Inspect tooling and registry
|
|
36
|
+
|
|
37
|
+
Read project guidance and run `spindle tool list` from the target Git working tree. Inspect package manifests, task runner configuration, and test/build configuration for the supplied target, or the whole project when no target is supplied. Verify command names, argument forms, and working-directory requirements against configuration. Preserve unrelated registry entries; absence from a targeted inspection is not evidence that an entry is obsolete.
|
|
38
|
+
|
|
39
|
+
Do not execute project commands merely to document them if execution could install dependencies, mutate data, or have side effects without authorization. If the registry is missing or invalid, report the prerequisite and stop; do not run initialization or silently repair it.
|
|
40
|
+
|
|
41
|
+
**Complete when:** the inspection scope, current entries, and verified candidate changes are known, selecting B; otherwise stop with the blocker.
|
|
42
|
+
|
|
43
|
+
### B. Propose tooling changes
|
|
44
|
+
|
|
45
|
+
Present the complete proposed additions, updates, and removals, including each entry's stable kebab-case key, section, exact command text, and optional description. Show current and proposed values for updates and identify entries being removed. Include relevant working-directory or usage limitations. Do not register every discovered command or propose speculative invocations.
|
|
46
|
+
|
|
47
|
+
If the user requests revisions, inspect any additional relevant configuration before presenting the revised change set.
|
|
48
|
+
|
|
49
|
+
**Complete when:** the exact change set is available for user review, or no changes are needed, selecting C.
|
|
50
|
+
|
|
51
|
+
### C. Changes approved?
|
|
52
|
+
|
|
53
|
+
Ask for explicit approval of the complete change set and wait. Approval applies only to the presented changes; revisions require a new proposal and approval. Declining leaves the registry unchanged. If no changes are needed, state that result and skip mutation without requesting approval.
|
|
54
|
+
|
|
55
|
+
**Complete when:** approval selects D, revisions select B, or declining or having no changes selects E. Without a response to a pending approval request, wait here.
|
|
56
|
+
|
|
57
|
+
### D. Apply approved changes
|
|
58
|
+
|
|
59
|
+
Apply only approved changes through Spindle, not by directly editing the registry or generated Markdown. Add one entry per approved command:
|
|
60
|
+
|
|
61
|
+
```sh
|
|
62
|
+
spindle tool add \
|
|
63
|
+
--key test-unit \
|
|
64
|
+
--section Testing \
|
|
65
|
+
--command "pnpm test -- --run" \
|
|
66
|
+
--description "Run the focused unit tests."
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Use `spindle tool update <key>` with the approved `--section`, `--command`, or `--description` fields; `--clear-description` explicitly removes a description. Use `spindle tool remove <key>` for approved removals. Each successful mutation regenerates the guide, grouped by section with empty sections omitted.
|
|
70
|
+
Run project scripts with `{{ computed.spindle_package_manager }} <script>`, such as `{{ computed.spindle_package_manager }} lint`.
|
|
71
|
+
|
|
72
|
+
If the inspected registry or relevant configuration has changed since approval, stop and return to A, then obtain approval for a refreshed proposal. If a command fails, stop and report the failure and any already-applied changes; do not claim atomicity or completion.
|
|
73
|
+
|
|
74
|
+
**Complete when:** all approved changes succeed with no unapproved changes, selecting E; otherwise report the blocker.
|
|
75
|
+
|
|
76
|
+
### E. Verify registry and guide
|
|
77
|
+
|
|
78
|
+
Run `spindle tool list` again and inspect `docs/agents/tooling.md`. Confirm entries, sections, commands, descriptions, and limitations agree, approved changes are reflected, and unrelated entries remain unchanged. After a decline or no-op, verify the existing state without mutating it. Report mismatches; any corrective changes require a new proposal and approval rather than direct Markdown edits.
|
|
79
|
+
|
|
80
|
+
**Complete when:** verification results and any discrepancies are known, selecting F.
|
|
81
|
+
|
|
82
|
+
### F. Report outcome
|
|
83
|
+
|
|
84
|
+
Summarize the inspected scope, changes applied or declined, and registry/guide verification. Explicitly identify failures, partial application, mismatches, and remaining actions; do not describe an unverified or inconsistent state as complete.
|
|
85
|
+
|
|
86
|
+
**Complete when:** the user or calling skill receives the outcome and any blockers.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const templateCatalog = {
|
|
2
|
+
project: [
|
|
3
|
+
{ source: "project/copilot-instructions.md", destination: ".github/copilot-instructions.md" },
|
|
4
|
+
{ source: "project/domain.md", destination: "docs/agents/domain.md" },
|
|
5
|
+
{ source: "project/ticket-tracker.md", destination: "docs/agents/ticket-tracker.md" },
|
|
6
|
+
],
|
|
7
|
+
sdd: {
|
|
8
|
+
spec: "sdd/spec.md",
|
|
9
|
+
design: "sdd/design.md",
|
|
10
|
+
ticket: "sdd/ticket.md",
|
|
11
|
+
},
|
|
12
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface TemplateAsset {
|
|
2
|
+
readonly source: string;
|
|
3
|
+
readonly destination: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
export const templateCatalog = {
|
|
7
|
+
project: [
|
|
8
|
+
{ source: "project/copilot-instructions.md", destination: ".github/copilot-instructions.md" },
|
|
9
|
+
{ source: "project/domain.md", destination: "docs/agents/domain.md" },
|
|
10
|
+
{ source: "project/ticket-tracker.md", destination: "docs/agents/ticket-tracker.md" },
|
|
11
|
+
] satisfies readonly TemplateAsset[],
|
|
12
|
+
sdd: {
|
|
13
|
+
spec: "sdd/spec.md",
|
|
14
|
+
design: "sdd/design.md",
|
|
15
|
+
ticket: "sdd/ticket.md",
|
|
16
|
+
},
|
|
17
|
+
} as const;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
## Agent skills
|
|
2
|
+
|
|
3
|
+
### Issue tracker
|
|
4
|
+
|
|
5
|
+
Repository triage requests are tracked as local Markdown under `.scratch/YYYY-MM-DD-<feature-slug>/`; SDD specs and tickets live in numbered `.scratch/<feature-id>-<feature-slug>/` workspaces. See `docs/agents/issue-tracker.md` and `docs/agents/ticket-tracker.md` for their conventions.
|
|
6
|
+
|
|
7
|
+
### Triage labels
|
|
8
|
+
|
|
9
|
+
Use `Category: bug|enhancement` and the five canonical state values in `Status:`. See `docs/agents/triage-labels.md`.
|
|
10
|
+
|
|
11
|
+
### Domain docs
|
|
12
|
+
|
|
13
|
+
This is a multi-context repo; use `GLOSSARY-MAP.md` to find the relevant context glossary and consult `docs/adr/` for cross-context decisions. See `docs/agents/domain.md`.
|
|
14
|
+
|
|
15
|
+
## Project Tooling
|
|
16
|
+
|
|
17
|
+
Run project commands with pnpm. Before running commands, read [Project tooling](../docs/agents/tooling.md) for available commands and usage.
|