@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,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-writing-agents
|
|
3
|
+
metadata:
|
|
4
|
+
spindle:
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
description: "{{ computed.internal_skill_description }}"
|
|
7
|
+
user-invocable: false
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Writing Custom Agents
|
|
11
|
+
|
|
12
|
+
Write focused, reusable agent definitions, not editor setup guides. Use `int-writing-for-agents` skill for the instruction body.
|
|
13
|
+
|
|
14
|
+
## Workflow
|
|
15
|
+
|
|
16
|
+
### 1. Define the role
|
|
17
|
+
|
|
18
|
+
Read nearby definitions and applicable instructions. Identify purpose, inputs, allowed actions, output, and stopping condition. Confirm the intended harness before adding harness-specific fields.
|
|
19
|
+
|
|
20
|
+
**Complete when:** role and invocation needs are explicit; harness-dependent requirements are resolved or blocked.
|
|
21
|
+
|
|
22
|
+
### 2. Create or revise the file
|
|
23
|
+
|
|
24
|
+
Use `.github/agents/<topic>.agent.md` for workspace agents. Preserve unrelated behavior. Write optional YAML between `---` delimiters, followed by Markdown instructions.
|
|
25
|
+
|
|
26
|
+
Every frontmatter field is optional in the VS Code format. Include useful `name` and task-specific `description` fields for identification and discovery; name defaults to the filename. Add only needed fields:
|
|
27
|
+
|
|
28
|
+
| Need | Authoring contract |
|
|
29
|
+
| ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
30
|
+
| Tool access | Use supported tools for the intended harness. In Local, `tools: ['read', 'search']` supports repository inspection; `tools: []` grants none. Omission uses enabled tools, not zero tools. |
|
|
31
|
+
| Model | Omit `model` to preserve the selected default; use confirmed available names only when requested. |
|
|
32
|
+
| Hidden worker | Set `user-invocable: false`; keep `disable-model-invocation: false` (the default) for normal worker discovery. Visibility and delegation are separate controls. |
|
|
33
|
+
| Delegation | In Local, include the `agent` tool set. Restrict workers with an `agents` allowlist of exact, case-sensitive names; omission or `['*']` allows all, `[]` prevents delegation. An explicit entry overrides that worker's `disable-model-invocation: true` in Local. |
|
|
34
|
+
| Handoff | Local handoffs transition the conversation, unlike subagent delegation. Each entry requires `label`, `agent`, and `prompt`; use `send: false` for user review before submission. |
|
|
35
|
+
|
|
36
|
+
Use current invocation fields instead of deprecated `infer`. Keep instruction-file fields such as `applyTo` out of agent frontmatter. `target` is not a harness selector; `mcp-servers` is for Copilot cloud agents, not VS Code agents. Check the [file reference](https://code.visualstudio.com/docs/agents/reference/custom-agent-file-reference) for additional fields and harness compatibility.
|
|
37
|
+
|
|
38
|
+
**Complete when:** fields, tools, invocation controls, and targets match the role and harness.
|
|
39
|
+
|
|
40
|
+
### 3. Write the body
|
|
41
|
+
|
|
42
|
+
State task, inputs, bounded workflow, output shape, and completion condition. Match actions to tools. Link guidance relative to the agent file. Example:
|
|
43
|
+
|
|
44
|
+
```markdown
|
|
45
|
+
---
|
|
46
|
+
name: Contract Reviewer
|
|
47
|
+
description: Review request/response contracts without changing files.
|
|
48
|
+
tools: ["read", "search"]
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
Review the contract paths identified by the caller.
|
|
52
|
+
Read relevant definitions, handlers, and tests.
|
|
53
|
+
Return evidence-backed findings with severity and file references.
|
|
54
|
+
If scope or evidence is missing, identify the missing input.
|
|
55
|
+
Stop after covering the supplied paths or reporting the blocker.
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
**Complete when:** scope, capabilities, output, and stopping condition are actionable.
|
|
59
|
+
|
|
60
|
+
### 4. Validate
|
|
61
|
+
|
|
62
|
+
Check location, YAML syntax, field names, references, tools, and agent identifiers. For behavior-shaping changes, use the `int-testing-agent-guidance` skill to establish a baseline and exercise a representative task; inspect output and tool use. Distinguish static checks from untested runtime discovery or invocation.
|
|
63
|
+
|
|
64
|
+
**Complete when:** evidence supports claims; unverified runtime requirements are explicit.
|
|
65
|
+
|
|
66
|
+
For creation context, see [Custom agents in VS Code](https://code.visualstudio.com/docs/agent-customization/custom-agents).
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-writing-for-agents
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.1.1
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Writing for agents
|
|
11
|
+
|
|
12
|
+
Shared Reference guidance for writing any document an agent consumes: a Skill, an Agent's instruction body, a project Instruction, or a document reached by a pointer. It covers wording and information hierarchy, not an authoring workflow. Aim for reliable application; the same wording does not guarantee the same behavior across models or hosts.
|
|
13
|
+
|
|
14
|
+
When writing a Skill, choosing its invocation, or designing a router, use the `int-writing-skills` skill for Skill structure, frontmatter, visibility, and the authoring workflow.
|
|
15
|
+
|
|
16
|
+
For behavior-shaping edits, use the `int-testing-agent-guidance` skill to establish a baseline and verify the revised guidance.
|
|
17
|
+
|
|
18
|
+
## Context pointers
|
|
19
|
+
|
|
20
|
+
A **context pointer** names out-of-context material and the condition for reaching it. A Skill description and an Instruction naming a reference are both pointers. Wording helps determine retrieval, but availability and host behavior matter too. For required material behind a weak pointer, sharpen the condition first; inline it only if retrieval still fails.
|
|
21
|
+
|
|
22
|
+
A pointer does two jobs: state what the material is, and list the **branches** that should trigger reaching it (a branch is a distinct case the document handles, so different runs take different paths through it). Every word of an always-loaded pointer costs on every turn, so it earns even harder pruning than the body:
|
|
23
|
+
|
|
24
|
+
- **Front-load the leading word**: the pointer is where it does its triggering work.
|
|
25
|
+
- **One trigger per branch.** Synonyms that rename a single branch are one branch written twice; collapse them and keep only genuinely distinct branches.
|
|
26
|
+
- **Cut identity the body already carries.**
|
|
27
|
+
|
|
28
|
+
Example: replace "See the release docs" with "When preparing a release, follow `docs/release-checks.md`." The latter names both the branch and the action; the reference keeps ownership of the checks.
|
|
29
|
+
|
|
30
|
+
## The two loads
|
|
31
|
+
|
|
32
|
+
Documents and pointers spend two budgets:
|
|
33
|
+
|
|
34
|
+
- **Context load** is the cost of material in the agent's window: tokens and attention. Always-loaded Instructions and discovery descriptions spend it even when irrelevant; a disclosed document spends it when loaded. The host determines what is loaded and when.
|
|
35
|
+
- **Cognitive load** is the cost on the human: which documents exist and when to reach for each. The human is the index. Not a cost to minimise: it is the price of human agency; spend it where human judgement matters, remove it where it does not.
|
|
36
|
+
|
|
37
|
+
Disclosure defers the body's context load, not eliminates it. An unreferenced document leaves the human responsible for finding and supplying it.
|
|
38
|
+
|
|
39
|
+
## Information hierarchy
|
|
40
|
+
|
|
41
|
+
A document is built from two content types: **steps** (the ordered actions the agent performs) and **reference** (definitions, rules, facts consulted on demand). The two mix freely: all steps (a recipe), all reference (a review's rules, this skill), or both. The core decision is where each piece sits on the **information hierarchy**, a ladder ranked by how immediately the agent needs the material:
|
|
42
|
+
|
|
43
|
+
1. **In-file step** is the primary tier: what the agent does, in order.
|
|
44
|
+
2. **In-file reference** is consulted on demand. Often a legitimately flat peer-set (every rule of a review on one rung), which is a fine arrangement, not a smell.
|
|
45
|
+
3. **Disclosed reference** is pushed out into a separate file, reached by a context pointer, loaded only when the pointer fires. Spans a sibling file in the same folder through fully external reference that lives anywhere and any document can point at.
|
|
46
|
+
|
|
47
|
+
Push too little down and the top bloats; push too much and you hide material the agent actually needs. That tension is the whole decision.
|
|
48
|
+
|
|
49
|
+
**Progressive disclosure** moves material out of the main file and behind a pointer so the common path stays legible. Inline what every branch needs; disclose what only some branches reach. For example, a release Skill keeps tests and changelog checks inline, but points database releases to `docs/database-release.md`.
|
|
50
|
+
|
|
51
|
+
**Co-location** decides what sits together once its tier is chosen. Keep a concept's definition, rules, and caveats under one heading, so a lookup brings the relevant constraints with it. Scattering fragments one meaning across headings; duplication repeats that meaning.
|
|
52
|
+
|
|
53
|
+
**Sprawl** is a document too long for reliable application, even when every line is unique. Disclose by branch or sequence when that improves application; file length alone does not establish a failure.
|
|
54
|
+
|
|
55
|
+
## Steps and completion criteria
|
|
56
|
+
|
|
57
|
+
Every step ends on a **completion criterion**, the condition that tells the agent the work is done. Two properties make it a lever:
|
|
58
|
+
|
|
59
|
+
- **Clarity**: can the agent tell done from not-done? Replace "understanding reached" with "Every affected module is listed with its path, impact, and supporting evidence." A vague bound can invite **premature completion**. Sharpen it first; only if it remains irreducibly fuzzy _and_ you observe rushing should you consider hiding the **post-completion steps**. A split hides them only if the host actually removes them from the executing context; a hand-off or subagent alone is not proof of isolation.
|
|
60
|
+
- **Demand**: how much it requires. "Every modified model accounted for" sets a stronger bar than "produce a change list." Demand specifies **legwork**, the digging required within the task. It also applies to flat reference: "every applicable rule checked" sets an exhaustiveness bar without prescribing a sequence.
|
|
61
|
+
|
|
62
|
+
The strongest criteria are both checkable and exhaustive.
|
|
63
|
+
|
|
64
|
+
## When to split
|
|
65
|
+
|
|
66
|
+
Splitting one document into two spends one of the two loads, so split only when the cut earns it:
|
|
67
|
+
|
|
68
|
+
- **By sequence**: consider a split when observed premature completion persists after sharpening the criterion. Verify that the split actually isolates later steps and improves the same scenario; otherwise keep the sequence together.
|
|
69
|
+
- **By invocation**: create a separate Skill when it needs independent discovery or explicit invocation by callers. Otherwise a conditionally disclosed reference file may be sufficient. Use the `int-writing-skills` skill to choose invocation and visibility.
|
|
70
|
+
|
|
71
|
+
## Leading words
|
|
72
|
+
|
|
73
|
+
A **leading word** is a compact term used consistently to name a behavior or concept. Familiar terms may help retrieval, but their meaning is model- and task-dependent. Define the intended meaning beside its rules; use shorthand only when it preserves the constraints.
|
|
74
|
+
|
|
75
|
+
The same term can connect a pointer to its body. That is a hypothesis to test in retrieval and application scenarios, not a guarantee from pretraining.
|
|
76
|
+
|
|
77
|
+
For example, **red** can name an observed failing test when that meaning is defined. **Tight** cannot replace "fast, deterministic, low-overhead" without losing independently checkable requirements.
|
|
78
|
+
|
|
79
|
+
Prefer a positive target when it makes the action clearer: "For release work, follow the release-checks reference" instead of "Don't forget the docs." Keep explicit prohibitions when needed for hard guardrails, paired with the permitted action. **Negation** does not universally cause the forbidden behavior; verify wording against the actual task.
|
|
80
|
+
|
|
81
|
+
## Pruning
|
|
82
|
+
|
|
83
|
+
- Keep each meaning in a **single source of truth**: one authoritative place, so changing the behaviour is a one-place edit. **Duplication** (the same meaning in more than one place) costs maintenance and tokens, and inflates a meaning's prominence on the ladder past its real rank. (The accidental inverse of a leading word, which repeats a token on purpose, never the meaning.)
|
|
84
|
+
- The **environment** is a source of truth too (`package.json` scripts, config files, the directory layout, `--help` output), and a document that restates it is a **cache**: a copy of a lookup, earning its load only when the lookup is expensive. Cache what the agent cannot find by looking: the unwritten convention, the reason behind a choice, the gotcha no config confesses. Leave the one-file, one-command lookups to the environment, where they cannot go stale.
|
|
85
|
+
- Check every line for **relevance**: does it still bear on what the document does? A line loses relevance by never bearing on the task (mere exposition, or a branch that should be disclosed) or by going stale as the behaviour or world it describes changes. Shorter documents are easier to keep relevant. Without a pruning discipline the default fate is **sediment**: stale layers that settle because adding feels safe and removing feels risky, until you must core down through them to find what is still live.
|
|
86
|
+
- Hunt **no-ops** through subtraction: run the same task with and without the candidate guidance, checking observable behavior through `int-testing-agent-guidance`. A passing run without it does not prove irrelevance across other tasks or models. Remove a sentence when the comparison supports that decision; preserve required contracts and guardrails. If wording fails, sharpen the action or criterion rather than merely adding a stronger adjective.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-writing-instruction
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.0.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Writing Copilot Instructions
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Use workspace instruction files to give Copilot concise, durable project guidance that does not belong in every task prompt. Put targeted files in `.github/instructions/**/*.instructions.md`; this skill covers writing and organizing them, not enabling them in VS Code.
|
|
15
|
+
|
|
16
|
+
## Choose Scope and Files
|
|
17
|
+
|
|
18
|
+
- Keep repository-wide guidance directly in `.github/instructions/`. Put package-specific guidance under `.github/instructions/packages/<package>/`, following the relevant source area when scopes differ. For example, orchestration controller guidance lives at `packages/orchestration/app/inertia-pages.instructions.md`, while test guidance lives under `packages/orchestration/tests/`.
|
|
19
|
+
- Name each file for its topic and end it in `.instructions.md`. Keep its `applyTo` pattern scoped to the source files the rules govern; the instruction file's directory is for organization, not a substitute for that glob.
|
|
20
|
+
- Make each file about one coherent topic or area, such as frontend conventions, API design, or tests.
|
|
21
|
+
- Split files when their rules apply to different code areas or tasks. A single broad file with conditional rules makes irrelevant guidance load and obscures which rules apply.
|
|
22
|
+
- Use a narrow `applyTo` pattern for file-specific conventions. Use `**` only when every workspace file genuinely needs the guidance.
|
|
23
|
+
- Keep repository requirements consistent with other applicable instructions. Sources can be additive; do not rely on file order or precedence to resolve conflicts.
|
|
24
|
+
- Do not repeat rules that are already clear in another instruction file or reliably enforced by project tooling.
|
|
25
|
+
|
|
26
|
+
## Frontmatter
|
|
27
|
+
|
|
28
|
+
All three fields are optional. Add only fields that improve discovery or scope:
|
|
29
|
+
|
|
30
|
+
| Field | Purpose |
|
|
31
|
+
| ------------- | --------------------------------------------------------------------------------------------------------- |
|
|
32
|
+
| `name` | Display name shown in the UI; defaults to the file name. |
|
|
33
|
+
| `description` | Describes tasks where the instructions are relevant, supporting task-based discovery. |
|
|
34
|
+
| `applyTo` | Workspace-relative glob that automatically attaches the file when matching files are created or modified. |
|
|
35
|
+
|
|
36
|
+
Use `description` when the guidance is useful for a task even if no matching file is open. Use `applyTo` when guidance is tied to files. Both may be useful together. If neither is present, the file must be attached manually.
|
|
37
|
+
|
|
38
|
+
```markdown
|
|
39
|
+
---
|
|
40
|
+
name: Python tests
|
|
41
|
+
description: Use when creating or changing Python tests, including when no test file is open.
|
|
42
|
+
applyTo: "**/*test*.py"
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
# Python Tests
|
|
46
|
+
|
|
47
|
+
- Reuse the fixtures and assertion style from nearby tests because they encode project conventions.
|
|
48
|
+
- Test observable behavior and important edge cases; keep each test focused on one outcome.
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Keep the body short and self-contained. State one actionable expectation per bullet and explain the reason when it helps Copilot handle edge cases. Show a concrete preferred pattern when a rule is otherwise ambiguous. Use `/` in paths and patterns.
|
|
52
|
+
|
|
53
|
+
## Validate
|
|
54
|
+
|
|
55
|
+
For behavior-shaping changes, use `int-testing-agent-guidance` to establish a baseline and try the same representative task with the revised guidance. Check the response's References to confirm the instruction was included, then inspect the work and tool activity for adherence. Discovery alone does not show that the guidance shaped the result.
|
|
56
|
+
|
|
57
|
+
For current VS Code behavior and frontmatter details, consult [Use custom instructions in VS Code](https://code.visualstudio.com/docs/agent-customization/custom-instructions).
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: int-writing-skills
|
|
3
|
+
description: "{{ computed.internal_skill_description }}"
|
|
4
|
+
user-invocable: false
|
|
5
|
+
metadata:
|
|
6
|
+
spindle:
|
|
7
|
+
version: 1.3.0
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Writing Skills
|
|
11
|
+
|
|
12
|
+
Author reusable guidance by testing the current behavior, addressing the observed gap, and retesting. This is an Interactive skill.
|
|
13
|
+
|
|
14
|
+
**REQUIRED:** Use the `int-writing-for-agents` skill for shared writing principles and the `int-testing-agent-guidance` skill for test execution. This skill owns Skill structure, frontmatter, visibility, invocation, routers, and the authoring workflow.
|
|
15
|
+
|
|
16
|
+
## Authoring flow
|
|
17
|
+
|
|
18
|
+
On entering each node, announce `Step <node ID> - <node label>` before acting. Announce resumed steps and loop re-entries; state each decision result and selected branch. For nested flowcharts, use the [hierarchical announcement protocol](./references/interactive-skills.md#flowchart-protocol).
|
|
19
|
+
|
|
20
|
+
```mermaid
|
|
21
|
+
flowchart TD
|
|
22
|
+
A[Choose scope and type] --> B[Test current guidance]
|
|
23
|
+
B --> C{Gap observed?}
|
|
24
|
+
C -- No --> H[Report no change needed]
|
|
25
|
+
C -- Yes --> D[Load type guidance and write]
|
|
26
|
+
D --> E[Test revised guidance]
|
|
27
|
+
E --> F{Scenario passes?}
|
|
28
|
+
F -- No --> D
|
|
29
|
+
F -- Yes --> G[Refactor and deliver]
|
|
30
|
+
G -- Wording changed --> E
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Complete each phase before continuing; track its applicable completion criteria as todos.
|
|
34
|
+
|
|
35
|
+
### A. Choose scope and type
|
|
36
|
+
|
|
37
|
+
A skill teaches a reusable capability. Put project conventions in instructions, one-off solutions in the task, and mechanically enforceable rules in tooling.
|
|
38
|
+
|
|
39
|
+
Choose the primary type:
|
|
40
|
+
|
|
41
|
+
- **Interactive:** ordered actions with completion criteria and progressively disclosed supporting material. Human input is required only where requested.
|
|
42
|
+
- **Reference:** knowledge consulted and applied as needed, organized for lookup. Examples and short procedures may support it.
|
|
43
|
+
|
|
44
|
+
Mixed content chooses its primary purpose, not a third type. Type is independent of visibility and invocation.
|
|
45
|
+
|
|
46
|
+
**Internal visibility:** name internal skills with `int-` and use exactly this description, instead of discovery triggers:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
This is an internal skill do not load it unless explicitly required by the user or another skill.
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
An internal skill is like a private method or class: a primary skill pulls it in at an explicit disclosure point. It may be Interactive or Reference and may have only one caller. Keep invocation by another skill available; `user-invocable: false` hides the slash command without disabling that route.
|
|
53
|
+
|
|
54
|
+
For non-internal, model-discoverable skills, start descriptions with "Use when..." and name concrete triggers, not workflow. Human-only skills use `disable-model-invocation: true` and a human-facing description. Follow the [Agent Skills specification](https://agentskills.io/specification): use a lowercase, hyphenated name matching its directory, a description of at most 1,024 characters, and repository version metadata.
|
|
55
|
+
|
|
56
|
+
**Invocation:** [VS Code's controls](https://code.visualstudio.com/docs/agent-customization/agent-skills#use-skills-as-slash-commands) separate slash-menu visibility from automatic discovery:
|
|
57
|
+
|
|
58
|
+
| Intended access | Configuration |
|
|
59
|
+
| ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
60
|
+
| Slash command and automatic discovery | Omit both controls; use concrete discovery branches in the description |
|
|
61
|
+
| Internal, explicitly requested by a caller; hidden from slash menu | Set `user-invocable: false`; use the internal description above and leave `disable-model-invocation` unset |
|
|
62
|
+
| Human-only slash command | Set `disable-model-invocation: true`; use a human-facing description and leave `user-invocable` unset |
|
|
63
|
+
| Neither slash command nor automatic discovery | Set both controls |
|
|
64
|
+
|
|
65
|
+
`description` is required in every case. Automatic discovery does not imply slash-menu visibility. These are VS Code's documented routes, not a universal guarantee of explicit loading or context cost across hosts. Verify caller invocation in the target host; when unavailable, use a plain reference file with an explicit pointer.
|
|
66
|
+
|
|
67
|
+
**Routers:** a router Skill gives the human one entry point naming target Skills and the conditions for choosing each. For human-only targets, direct the human to invoke the target rather than executing it automatically: "For release preparation, invoke `/release-checks`. To publish, choose `/publish` yourself." Executing other Skills requires a verified host-supported loading route and targets intended for that route.
|
|
68
|
+
|
|
69
|
+
Apply **DRY**: keep each meaning authoritative in one place; reuse existing guidance through explicit pointers. Apply **YAGNI**: include only what the requested capability needs. Internal skills enable disclosure, not speculative abstractions.
|
|
70
|
+
|
|
71
|
+
**Complete when:** reusable scope, primary type, visibility, invocation, and relevant prior art are explicit.
|
|
72
|
+
|
|
73
|
+
### B. Test current guidance
|
|
74
|
+
|
|
75
|
+
Before drafting or editing, read [Testing skills](./references/testing-skills.md) and run the baseline. **No skill without a failing test first.** If drafted before RED, discard the draft and restart from the baseline.
|
|
76
|
+
|
|
77
|
+
**Complete when:** a frozen scenario, observable criterion, and baseline result are recorded.
|
|
78
|
+
|
|
79
|
+
### C. Gap observed?
|
|
80
|
+
|
|
81
|
+
Compare the recorded behavior with the criterion. A specific failure selects Yes and D; a passing baseline selects No and H.
|
|
82
|
+
|
|
83
|
+
**Complete when:** the result and selected branch are explicit.
|
|
84
|
+
|
|
85
|
+
### D. Load type guidance and write
|
|
86
|
+
|
|
87
|
+
Load only the selected branch:
|
|
88
|
+
|
|
89
|
+
- **Interactive:** read [Interactive skills](./references/interactive-skills.md).
|
|
90
|
+
- **Reference:** read [Reference skills](./references/reference-skills.md).
|
|
91
|
+
|
|
92
|
+
Use the matching template named there for every new skill. For existing skills, adopt its structure only where relevant to the requested edit. Address the observed gap using the guidance form selected during testing.
|
|
93
|
+
|
|
94
|
+
Store skills at `.github/skills/<skill-name>/SKILL.md`. Keep that entry file at the skill root; put supporting documentation in `references/` and output templates in `assets/`:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
skill-name/
|
|
98
|
+
├── SKILL.md
|
|
99
|
+
├── references/ - documentation loaded when needed
|
|
100
|
+
└── assets/ - templates and other files used in output
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Keep the common path inline; disclose branch-specific material through conditional pointers. Internal skills are another disclosure boundary when explicitly invoked guidance is appropriate.
|
|
104
|
+
|
|
105
|
+
**Complete when:** the selected structure is filled, references resolve, each retained section has a distinct purpose, and no placeholder remains.
|
|
106
|
+
|
|
107
|
+
### E. Test revised guidance
|
|
108
|
+
|
|
109
|
+
Rerun the same frozen scenario in a fresh context using the `int-testing-agent-guidance` skill and the selected criteria in [Testing skills](./references/testing-skills.md).
|
|
110
|
+
|
|
111
|
+
**Complete when:** revised behavior and any remaining failures are recorded.
|
|
112
|
+
|
|
113
|
+
### F. Scenario passes?
|
|
114
|
+
|
|
115
|
+
Compare observed behavior with the unchanged criterion. An unresolved failure selects No and D for a targeted correction; a passing scenario selects Yes and G.
|
|
116
|
+
|
|
117
|
+
**Complete when:** evidence supports the stated result and selected branch.
|
|
118
|
+
|
|
119
|
+
### G. Refactor and deliver
|
|
120
|
+
|
|
121
|
+
Prune duplication, stale material, and speculative rules. Retest after wording changes. Verify frontmatter, relative links, resource packaging, and any required version bump. Run expanded testing only when requested, including `--test`.
|
|
122
|
+
|
|
123
|
+
**Complete when:** final validation passes or limitations are explicit, and the change is ready for authorized delivery. Commit, push, or open a PR only when requested.
|
|
124
|
+
|
|
125
|
+
### H. Report no change needed
|
|
126
|
+
|
|
127
|
+
Leave passing behavior unchanged. Report the scenario and evidence without inventing a gap.
|
|
128
|
+
|
|
129
|
+
**Complete when:** the user has the baseline result and reason no revision is needed.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Interactive skill template
|
|
2
|
+
|
|
3
|
+
Replace every `[placeholder text]` slot. Apply the common metadata and visibility rules in the primary authoring skill. Keep the optional flowchart only when the workflow has a non-obvious branch or loop; adapt its nodes and matching step headings together.
|
|
4
|
+
|
|
5
|
+
````markdown
|
|
6
|
+
---
|
|
7
|
+
name: [skill-name]
|
|
8
|
+
description: "[description appropriate to visibility and invocation]"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# [Skill title]
|
|
12
|
+
|
|
13
|
+
[Purpose, scope, and concrete applicability.]
|
|
14
|
+
|
|
15
|
+
## [Optional argument contract]
|
|
16
|
+
|
|
17
|
+
[If this skill accepts arguments, add argument-hint to frontmatter and define accepted inputs using the Arguments reference. Specify required and optional inputs, paired long/short flags, defaults, values, parsing boundaries, validation, and workflow effects. Validate before workflow actions. Otherwise omit this section and argument-hint.]
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
[Required guidance for all paths, if any.]
|
|
22
|
+
|
|
23
|
+
On entering each node, announce `Step <node path> - <label path>` before acting. Announce resumed steps and loop re-entries; state each decision result and selected branch. For sub-flowcharts, use dot-separated ancestor IDs and labels separated by `/`.
|
|
24
|
+
|
|
25
|
+
```mermaid
|
|
26
|
+
flowchart TD
|
|
27
|
+
A[Establish scope] --> B[Perform work]
|
|
28
|
+
B --> C{Result meets criteria?}
|
|
29
|
+
C -- No --> B
|
|
30
|
+
C -- Yes --> D[Report result]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### A. Establish scope
|
|
34
|
+
|
|
35
|
+
[Actions that establish the required inputs and intended result.]
|
|
36
|
+
|
|
37
|
+
**Complete when:** [Checkable, exhaustive scope criterion.]
|
|
38
|
+
|
|
39
|
+
### B. Perform work
|
|
40
|
+
|
|
41
|
+
[Actions using the established scope. At a branch-specific need, require loading its supporting reference or internal skill and state the trigger.]
|
|
42
|
+
|
|
43
|
+
**Complete when:** [Checkable, exhaustive work criterion.]
|
|
44
|
+
|
|
45
|
+
### C. Result meets criteria?
|
|
46
|
+
|
|
47
|
+
[Evaluate the result against the criterion; state the result and selected branch.]
|
|
48
|
+
|
|
49
|
+
**Complete when:** [Evidence supports either returning to B or proceeding to D.]
|
|
50
|
+
|
|
51
|
+
### D. Report result
|
|
52
|
+
|
|
53
|
+
[Required output, evidence, and unresolved limitations.]
|
|
54
|
+
|
|
55
|
+
**Complete when:** [The delivered result and validation evidence meet the requested contract.]
|
|
56
|
+
|
|
57
|
+
## [Optional sub-flowchart title]
|
|
58
|
+
|
|
59
|
+
Parent: [Full parent node path and label path]. Enter when [observable condition]. Local node IDs below extend the parent path in announcements.
|
|
60
|
+
|
|
61
|
+
```mermaid
|
|
62
|
+
flowchart TD
|
|
63
|
+
A[Inspect evidence] --> B[Assess evidence]
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### [Parent path].A. Inspect evidence
|
|
67
|
+
|
|
68
|
+
[Child action.]
|
|
69
|
+
|
|
70
|
+
**Complete when:** [Checkable child criterion.]
|
|
71
|
+
|
|
72
|
+
### [Parent path].B. Assess evidence
|
|
73
|
+
|
|
74
|
+
[Child action and exit condition. On exit, announce the parent as resumed and continue at the stated return point without repeating completed child work.]
|
|
75
|
+
|
|
76
|
+
**Complete when:** [Child exit criterion and exact parent return point.]
|
|
77
|
+
|
|
78
|
+
## [Optional example]
|
|
79
|
+
|
|
80
|
+
[One adaptable example. Use pseudocode for language-neutral illustrative code; actual language only for a skill always specific to it. Commands and required formats keep their syntax.]
|
|
81
|
+
````
|
|
82
|
+
|
|
83
|
+
Remove unused optional sections. If the flowchart is omitted, replace node-based headings with ordered steps and omit its announcement instruction. A retained sub-flowchart requires a real parent call site and matching return point. Add repository-required version and invocation metadata before delivery.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Reference skill template
|
|
2
|
+
|
|
3
|
+
Replace every `[placeholder text]` slot. Apply the common metadata and visibility rules in the primary authoring skill. Repeat topic sections only for distinct lookup needs; remove optional sections that do not apply.
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
---
|
|
7
|
+
name: [skill-name]
|
|
8
|
+
description: "[description appropriate to visibility and invocation]"
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# [Subject]
|
|
12
|
+
|
|
13
|
+
[Covered knowledge, applicability, and relevant version or environment boundaries.]
|
|
14
|
+
|
|
15
|
+
## [Lookup topic]
|
|
16
|
+
|
|
17
|
+
[Precise facts or contract: inputs, outputs, constraints, and failure behavior where relevant. Keep caveats beside the fact they qualify.]
|
|
18
|
+
|
|
19
|
+
## [Conditional topic pointer, if needed]
|
|
20
|
+
|
|
21
|
+
When [observable feature or environment condition], read [supporting reference or explicitly required internal skill] for [knowledge needed only in that case].
|
|
22
|
+
|
|
23
|
+
## [Application example]
|
|
24
|
+
|
|
25
|
+
[One valid, adaptable example that applies the documented contract, with real syntax or pseudocode clearly identified.]
|
|
26
|
+
|
|
27
|
+
## [Authoritative sources]
|
|
28
|
+
|
|
29
|
+
[Source links or environment lookups needed to establish or refresh the facts.]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Add repository-required version and invocation metadata before delivery.
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Arguments
|
|
2
|
+
|
|
3
|
+
Load when authoring an Interactive skill that accepts arguments, whether supplied by a user or explicitly by another skill. Argument support is optional; within an argument-accepting skill, individual inputs may be required or optional.
|
|
4
|
+
|
|
5
|
+
## Define the contract
|
|
6
|
+
|
|
7
|
+
Put `argument-hint` in frontmatter to advertise syntax. Define behavior in the skill body before workflow actions; the hint alone does not parse or validate inputs.
|
|
8
|
+
|
|
9
|
+
Specify:
|
|
10
|
+
|
|
11
|
+
- Accepted flags and positional inputs, each marked required or optional.
|
|
12
|
+
- Both a long name and a unique, case-sensitive single-letter short alias for every flag, with identical behavior: for example, `--test` / `-T`.
|
|
13
|
+
- Whether each flag is a switch or takes a value, its accepted values, and its default when omitted.
|
|
14
|
+
- How each input changes workflow branches or output. For example, a test option adds expanded checks while ordinary checks still run.
|
|
15
|
+
- Parsing rules, validation failures, and repeated or conflicting option behavior.
|
|
16
|
+
|
|
17
|
+
A calling skill supplies inputs explicitly. Use declared defaults for omissions; conversational mentions elsewhere are not arguments.
|
|
18
|
+
|
|
19
|
+
## Parsing defaults
|
|
20
|
+
|
|
21
|
+
Use these defaults for skills accepting free-form task text. If a capability needs different rules, state the replacement explicitly in its contract.
|
|
22
|
+
|
|
23
|
+
1. Parse only the leading option prefix. Recognize exact declared long and short forms; short aliases are individual tokens, not bundles such as `-TF`. Case variants are different names.
|
|
24
|
+
2. A value-taking flag consumes the next token as its value. Validate that token before continuing; a missing value or another option in its place requires correction. Support forms such as `--format=json` only if explicitly declared.
|
|
25
|
+
3. `--` ends option parsing and is not part of task text. Otherwise, the first non-option token starts the task. Preserve the remaining task text unchanged, including later flag-like text; remove only the separating whitespace before the task.
|
|
26
|
+
4. Reject unknown leading flags, unsupported values, and repeated options, including repetition through aliases. Never silently choose between conflicting values.
|
|
27
|
+
5. Validate required inputs after parsing. Explain each invalid or missing input and request correction before performing workflow actions.
|
|
28
|
+
|
|
29
|
+
For structured caller inputs, validate the same names, values, requirements, and defaults without reconstructing a command string. Any supplied raw argument string follows the same parsing contract as user input.
|
|
30
|
+
|
|
31
|
+
## Example
|
|
32
|
+
|
|
33
|
+
A skill accepting required task text and optional testing and output controls could advertise:
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
argument-hint: "[--test|-T] [--format|-F <text|json>] [--] <task>"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Its body declares `--test` / `-T` as a switch defaulting off and `--format` / `-F` as a value-taking option defaulting to `text`, with `text` and `json` accepted. Testing enables expanded checks in addition to ordinary checks; format selects the report shape.
|
|
40
|
+
|
|
41
|
+
| Input | Parsed result |
|
|
42
|
+
| --------------------------------------------- | ------------------------------------------------------------- |
|
|
43
|
+
| `-T --format json investigate --test in logs` | Testing on, JSON output; task is `investigate --test in logs` |
|
|
44
|
+
| `-- --test is task text` | Defaults; task is `--test is task text` |
|
|
45
|
+
| `--format` | Request a value and required task text before work |
|
|
46
|
+
| `--format text -F json investigate` | Request one format choice before work |
|
|
47
|
+
|
|
48
|
+
Render the selected contract into the authored skill; its executing agent should not need this authoring reference.
|
|
49
|
+
|
|
50
|
+
**Complete when:** accepted inputs have unambiguous semantics, invalid input stops before work, and tests exercise aliases, defaults, parsing boundaries, and correction paths.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Interactive skills
|
|
2
|
+
|
|
3
|
+
Use this branch when the skill primarily directs the agent through work. Interaction means agent action, not mandatory conversation with a human.
|
|
4
|
+
|
|
5
|
+
## Structure and disclosure
|
|
6
|
+
|
|
7
|
+
For a new skill, load and fill the [Interactive template](../assets/interactive.md). For an existing skill, apply it only to the relevant edit.
|
|
8
|
+
|
|
9
|
+
- Put purpose and applicability before ordered actions. End each action with a checkable, exhaustive completion criterion.
|
|
10
|
+
- Keep what every path needs in `SKILL.md`. Put branch-specific guidance behind a pointer beside the action that needs it; name the observable condition that requires loading it.
|
|
11
|
+
- Co-locate a concept's definition, rules, and caveats. Use `int-writing-for-agents` skill for the shared writing principles rather than restating them.
|
|
12
|
+
- Use a small flowchart for a non-obvious branch or loop, with simple action labels and short decision labels. Keep diagram nodes, step headings, branch targets, and completion criteria consistent.
|
|
13
|
+
- Add quick reference and common mistakes only when they serve a distinct need. Aim below 500 words when reliable at that length.
|
|
14
|
+
|
|
15
|
+
## Optional arguments
|
|
16
|
+
|
|
17
|
+
Argument support is optional. When the skill accepts arguments from a user or a calling skill, read [Arguments](./arguments.md) and define its contract before workflow actions. For skills without arguments, omit the argument contract and `argument-hint`.
|
|
18
|
+
|
|
19
|
+
## Flowchart protocol
|
|
20
|
+
|
|
21
|
+
Every Interactive skill with a flowchart must instruct the executing agent to announce **before acting** on each node:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
Step <node path> - <label path> [optional task context]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Announce initial entries, resumed steps, and loop re-entries. After evaluating a decision, state its result and selected branch before entering the target node. Task context may identify a review mode or work item; it does not replace the node path.
|
|
28
|
+
|
|
29
|
+
### Sub-flowcharts
|
|
30
|
+
|
|
31
|
+
Each sub-flowchart declares its parent node and the condition for entering it. IDs are local to each diagram; announcements use the full dot-separated ancestor path. Labels use the same order, separated by `/`.
|
|
32
|
+
|
|
33
|
+
For example, a primary node `C[Verify skill]` can disclose a child diagram with local node `A[Run focused scenario]`:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
Step C - Verify skill
|
|
37
|
+
Step C.A - Verify skill / Run focused scenario
|
|
38
|
+
Step C.A.B - Verify skill / Run focused scenario / Assess result
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The third line illustrates a further child `B` under `C.A`. Declare that parent explicitly too. Repeat the full path at every depth, including decision results and branch targets, so reused local IDs remain unambiguous.
|
|
42
|
+
|
|
43
|
+
Define each child exit and its return point in the parent. When a child finishes, announce the parent as resumed and continue after the child call; do not restart completed child work. A child loop stays within the child until its exit criterion is met.
|
|
44
|
+
|
|
45
|
+
The authoring skill's own announcement instruction is an instance of this protocol. In an authored skill, render the protocol into its execution instructions so the agent can follow that skill without loading authoring guidance.
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
Use one complete, adaptable example when it helps application. For illustrative code, use **pseudocode** unless the skill is always specific to one programming language; then use that language. Executable commands and required formats such as YAML and Mermaid retain their actual syntax.
|
|
50
|
+
|
|
51
|
+
## Completion
|
|
52
|
+
|
|
53
|
+
The workflow is usable without loading unrelated branches; every action has an observable end; diagrams and announcements preserve parent/child context; examples match the skill's language scope. Use [Testing skills](./testing-skills.md) to select an application scenario, not merely a prose review.
|