@deftai/directive-content 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/deft/SKILL.md +6 -0
- package/.agents/skills/deft-directive-article-review/SKILL.md +11 -0
- package/.agents/skills/deft-directive-build/SKILL.md +10 -0
- package/.agents/skills/deft-directive-cost/SKILL.md +12 -0
- package/.agents/skills/deft-directive-debug/SKILL.md +13 -0
- package/.agents/skills/deft-directive-gh-arch/SKILL.md +11 -0
- package/.agents/skills/deft-directive-gh-slice/SKILL.md +10 -0
- package/.agents/skills/deft-directive-glossary/SKILL.md +10 -0
- package/.agents/skills/deft-directive-interview/SKILL.md +9 -0
- package/.agents/skills/deft-directive-pre-pr/SKILL.md +9 -0
- package/.agents/skills/deft-directive-refinement/SKILL.md +10 -0
- package/.agents/skills/deft-directive-release/SKILL.md +12 -0
- package/.agents/skills/deft-directive-review-cycle/SKILL.md +10 -0
- package/.agents/skills/deft-directive-setup/SKILL.md +10 -0
- package/.agents/skills/deft-directive-swarm/SKILL.md +10 -0
- package/.agents/skills/deft-directive-sync/SKILL.md +9 -0
- package/.agents/skills/deft-directive-triage/SKILL.md +9 -0
- package/.agents/skills/deft-directive-write-skill/SKILL.md +9 -0
- package/LICENSE.md +22 -0
- package/QUICK-START.md +167 -0
- package/UPGRADING.md +517 -0
- package/coding/build-output.md +28 -0
- package/coding/coding.md +235 -0
- package/coding/debugging.md +110 -0
- package/coding/holzmann.md +96 -0
- package/coding/hygiene.md +127 -0
- package/coding/security.md +158 -0
- package/coding/testing.md +162 -0
- package/coding/toolchain.md +44 -0
- package/commands.md +300 -0
- package/context/context.md +57 -0
- package/context/deterministic-split.md +67 -0
- package/context/examples.md +26 -0
- package/context/fractal-summaries.md +69 -0
- package/context/long-horizon.md +46 -0
- package/context/spec-deltas.md +177 -0
- package/context/tool-design.md +34 -0
- package/context/working-memory.md +62 -0
- package/contracts/boundary-maps.md +65 -0
- package/contracts/deterministic-questions.md +59 -0
- package/contracts/hierarchy.md +77 -0
- package/conventions/content-manifest.json +399 -0
- package/conventions/machine-generated-banner.md +130 -0
- package/conventions/references.md +120 -0
- package/conventions/rule-ownership.json +382 -0
- package/conventions/task-caching.md +43 -0
- package/conventions/vbrief-filenames.md +70 -0
- package/deployments/README.md +37 -0
- package/deployments/agentuity/README.md +138 -0
- package/deployments/agentuity/via-cli.md +380 -0
- package/deployments/agentuity/via-cloud.md +425 -0
- package/deployments/agentuity/via-github-actions.md +664 -0
- package/deployments/agentuity/via-gravity-network.md +606 -0
- package/deployments/agentuity/via-vpc.md +607 -0
- package/deployments/aws/README.md +38 -0
- package/deployments/aws/via-app-runner.md +612 -0
- package/deployments/aws/via-ecs-fargate.md +561 -0
- package/deployments/aws/via-elastic-beanstalk.md +628 -0
- package/deployments/aws/via-lambda.md +649 -0
- package/deployments/azure/README.md +37 -0
- package/deployments/azure/via-aks.md +390 -0
- package/deployments/azure/via-app-service.md +564 -0
- package/deployments/azure/via-container-apps.md +599 -0
- package/deployments/azure/via-functions.md +552 -0
- package/deployments/cloud-gov/README.md +63 -0
- package/deployments/cloud-gov/agents/compliance-docs.md +154 -0
- package/deployments/cloud-gov/agents.md +39 -0
- package/deployments/cloud-gov/cicd.md +64 -0
- package/deployments/cloud-gov/deployment.md +150 -0
- package/deployments/cloud-gov/logging.md +43 -0
- package/deployments/cloud-gov/manifest.md +121 -0
- package/deployments/cloud-gov/overview.md +58 -0
- package/deployments/cloud-gov/security.md +46 -0
- package/deployments/cloud-gov/services.md +72 -0
- package/deployments/cloud-gov/upstream/README.md +18 -0
- package/deployments/cloudflare/README.md +33 -0
- package/deployments/cloudflare/via-dashboard.md +83 -0
- package/deployments/cloudflare/via-git.md +90 -0
- package/deployments/cloudflare/via-github-actions.md +185 -0
- package/deployments/cloudflare/via-terraform.md +157 -0
- package/deployments/cloudflare/via-wrangler.md +165 -0
- package/deployments/fly-io/README.md +37 -0
- package/deployments/fly-io/via-dockerfile.md +648 -0
- package/deployments/fly-io/via-flyctl.md +653 -0
- package/deployments/fly-io/via-github-actions.md +695 -0
- package/deployments/fly-io/via-multi-region.md +598 -0
- package/deployments/google/README.md +34 -0
- package/deployments/google/via-app-engine.md +42 -0
- package/deployments/google/via-cloud-functions.md +23 -0
- package/deployments/google/via-cloud-run.md +330 -0
- package/deployments/google/via-gke.md +23 -0
- package/deployments/netlify/README.md +99 -0
- package/deployments/netlify/via-cli.md +17 -0
- package/deployments/netlify/via-functions.md +19 -0
- package/deployments/netlify/via-git.md +25 -0
- package/deployments/vercel/README.md +90 -0
- package/deployments/vercel/via-api.md +16 -0
- package/deployments/vercel/via-cli.md +17 -0
- package/deployments/vercel/via-git.md +24 -0
- package/docs/BROWNFIELD.md +179 -0
- package/docs/getting-started.md +137 -0
- package/docs/good-agents-md.md +137 -0
- package/events/README.md +89 -0
- package/events/event-record.schema.json +26 -0
- package/events/registry.json +166 -0
- package/events/registry.schema.json +71 -0
- package/glossary.md +145 -0
- package/incidents/README.md +81 -0
- package/incidents/_template.md +38 -0
- package/interfaces/cli.md +104 -0
- package/interfaces/rest.md +212 -0
- package/interfaces/tui.md +242 -0
- package/interfaces/web.md +123 -0
- package/languages/6502-DASM.md +132 -0
- package/languages/c.md +235 -0
- package/languages/commands.md +23 -0
- package/languages/cpp.md +132 -0
- package/languages/csharp.md +259 -0
- package/languages/dart.md +183 -0
- package/languages/delphi.md +218 -0
- package/languages/elixir.md +208 -0
- package/languages/go.md +78 -0
- package/languages/java.md +278 -0
- package/languages/javascript.md +163 -0
- package/languages/julia.md +175 -0
- package/languages/kotlin.md +193 -0
- package/languages/markdown.md +168 -0
- package/languages/mermaid.md +146 -0
- package/languages/officejs.md +392 -0
- package/languages/python.md +209 -0
- package/languages/r.md +163 -0
- package/languages/rust.md +216 -0
- package/languages/sql.md +216 -0
- package/languages/swift.md +153 -0
- package/languages/typescript.md +132 -0
- package/languages/vba.md +279 -0
- package/languages/vhdl.md +180 -0
- package/languages/visual-basic.md +151 -0
- package/languages/zig.md +196 -0
- package/meta/SOUL.md +27 -0
- package/meta/code-field.md +44 -0
- package/meta/morals.md +40 -0
- package/meta/philosophy.md +39 -0
- package/meta/project.md +49 -0
- package/meta/ralph.md +223 -0
- package/meta/security.md +80 -0
- package/meta/versioning.md +326 -0
- package/package.json +22 -0
- package/packs/lessons/lessons-pack-0.1.json +553 -0
- package/packs/patterns/patterns-pack-0.1.json +57 -0
- package/packs/rules/rules-pack-0.1.json +4767 -0
- package/packs/skills/skills-pack-0.1.json +262 -0
- package/packs/strategies/strategies-pack-0.1.json +167 -0
- package/packs/swarm-spec/swarm-spec-pack-0.1.json +17 -0
- package/patterns/executor-layer-credentials.md +227 -0
- package/patterns/llm-app.md +156 -0
- package/patterns/multi-agent.md +278 -0
- package/patterns/prompt-assembly-layer-ordering.md +154 -0
- package/patterns/role-as-overlay.md +179 -0
- package/platforms/2600.md +137 -0
- package/platforms/unity.md +329 -0
- package/references/composer-skill-porting.md +152 -0
- package/references/cost-models.md +163 -0
- package/references/ip-risk.md +246 -0
- package/references/plain-english-ux.md +275 -0
- package/resilience/context-pruning.md +67 -0
- package/resilience/continue-here.md +62 -0
- package/scm/changelog.md +276 -0
- package/scm/git.md +139 -0
- package/scm/github.md +265 -0
- package/secrets/.gitkeep +0 -0
- package/skills/deft-build/SKILL.md +20 -0
- package/skills/deft-directive-article-review/SKILL.md +156 -0
- package/skills/deft-directive-build/SKILL.md +302 -0
- package/skills/deft-directive-cost/SKILL.md +201 -0
- package/skills/deft-directive-debug/SKILL.md +140 -0
- package/skills/deft-directive-decompose/SKILL.md +96 -0
- package/skills/deft-directive-gh-arch/SKILL.md +160 -0
- package/skills/deft-directive-gh-slice/SKILL.md +199 -0
- package/skills/deft-directive-glossary/SKILL.md +118 -0
- package/skills/deft-directive-interview/SKILL.md +528 -0
- package/skills/deft-directive-pre-pr/SKILL.md +131 -0
- package/skills/deft-directive-probe/SKILL.md +127 -0
- package/skills/deft-directive-refinement/SKILL.md +403 -0
- package/skills/deft-directive-release/SKILL.md +266 -0
- package/skills/deft-directive-review-cycle/SKILL.md +401 -0
- package/skills/deft-directive-setup/SKILL.md +717 -0
- package/skills/deft-directive-swarm/SKILL.md +989 -0
- package/skills/deft-directive-sync/SKILL.md +288 -0
- package/skills/deft-directive-triage/SKILL.md +137 -0
- package/skills/deft-directive-write-skill/SKILL.md +169 -0
- package/skills/deft-interview/SKILL.md +16 -0
- package/skills/deft-pre-pr/SKILL.md +16 -0
- package/skills/deft-review-cycle/SKILL.md +16 -0
- package/skills/deft-roadmap-refresh/SKILL.md +16 -0
- package/skills/deft-setup/SKILL.md +20 -0
- package/skills/deft-swarm/SKILL.md +16 -0
- package/skills/deft-sync/SKILL.md +16 -0
- package/strategies/README.md +83 -0
- package/strategies/artifact-guards.md +85 -0
- package/strategies/bdd.md +115 -0
- package/strategies/brownfield.md +7 -0
- package/strategies/discuss.md +129 -0
- package/strategies/emit-hints.md +69 -0
- package/strategies/enterprise.md +193 -0
- package/strategies/interview.md +551 -0
- package/strategies/map.md +179 -0
- package/strategies/probe.md +151 -0
- package/strategies/rapid.md +155 -0
- package/strategies/research.md +155 -0
- package/strategies/roadmap.md +9 -0
- package/strategies/speckit.md +437 -0
- package/strategies/v0-20-contract.md +134 -0
- package/strategies/yolo.md +169 -0
- package/swarm/swarm.md +300 -0
- package/templates/COST-ESTIMATE.md +114 -0
- package/templates/PULL_REQUEST_TEMPLATE.md +35 -0
- package/templates/agent-prompt-preamble.md +409 -0
- package/templates/agents-entry.md +211 -0
- package/templates/agents-entry.placeholders.md +75 -0
- package/templates/embed.go +20 -0
- package/templates/embed_test.go +36 -0
- package/templates/make-spec-example.md +9 -0
- package/templates/make-spec.md +246 -0
- package/templates/project.md.template +52 -0
- package/templates/specification.md +1 -0
- package/templates/swarm-greptile-poller-prompt.md +556 -0
- package/templates/user.md.template +31 -0
- package/tools/RWLDL.md +80 -0
- package/tools/greptile.md +141 -0
- package/tools/installer.md +23 -0
- package/tools/taskfile-migration.md +32 -0
- package/tools/taskfile.md +185 -0
- package/tools/telemetry.md +285 -0
- package/vbrief/schemas/cache-meta.schema.json +137 -0
- package/vbrief/schemas/candidates.schema.json +130 -0
- package/vbrief/schemas/codebase-map.schema.json +213 -0
- package/vbrief/schemas/lessons-pack.schema.json +134 -0
- package/vbrief/schemas/patterns-pack.schema.json +84 -0
- package/vbrief/schemas/rules-pack.schema.json +105 -0
- package/vbrief/schemas/skills-pack.schema.json +94 -0
- package/vbrief/schemas/slices.schema.json +87 -0
- package/vbrief/schemas/strategies-pack.schema.json +89 -0
- package/vbrief/schemas/swarm-spec-pack.schema.json +84 -0
- package/vbrief/schemas/vbrief-core.schema.json +1022 -0
- package/vbrief/vbrief.md +684 -0
- package/verification/integration.md +76 -0
- package/verification/plan-checking.md +85 -0
- package/verification/uat.md +60 -0
- package/verification/verification.md +117 -0
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://deft.dev/schemas/codebase-map.v1.schema.json",
|
|
4
|
+
"title": "Codebase Map Artifact v1",
|
|
5
|
+
"description": "Language-neutral contract for a provider-emitted codebase-map.v1 artifact. Out-of-process providers may be written in any language, but must emit this JSON object on stdout for Directive to accept it instead of falling back to the default extractor.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": true,
|
|
8
|
+
"required": [
|
|
9
|
+
"formatVersion",
|
|
10
|
+
"contractVersion",
|
|
11
|
+
"kind",
|
|
12
|
+
"provider",
|
|
13
|
+
"source",
|
|
14
|
+
"modules",
|
|
15
|
+
"coupling",
|
|
16
|
+
"entryPoints",
|
|
17
|
+
"languageDistribution",
|
|
18
|
+
"degraded"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"formatVersion": {
|
|
22
|
+
"const": "codebase-map.v1",
|
|
23
|
+
"description": "Artifact format version owned by Directive."
|
|
24
|
+
},
|
|
25
|
+
"contractVersion": {
|
|
26
|
+
"const": "codebase-provider.v1",
|
|
27
|
+
"description": "Provider handshake contract version accepted by Directive."
|
|
28
|
+
},
|
|
29
|
+
"kind": {
|
|
30
|
+
"const": "codebase-map",
|
|
31
|
+
"description": "Projection kind."
|
|
32
|
+
},
|
|
33
|
+
"provider": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": true,
|
|
36
|
+
"required": ["name"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"name": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"minLength": 1
|
|
41
|
+
},
|
|
42
|
+
"version": {
|
|
43
|
+
"type": "string"
|
|
44
|
+
},
|
|
45
|
+
"mode": {
|
|
46
|
+
"type": "string"
|
|
47
|
+
},
|
|
48
|
+
"degraded": {
|
|
49
|
+
"type": "boolean"
|
|
50
|
+
},
|
|
51
|
+
"fallbackReason": {
|
|
52
|
+
"type": "string"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"source": {
|
|
57
|
+
"type": "object",
|
|
58
|
+
"additionalProperties": true,
|
|
59
|
+
"required": ["projectRoot"],
|
|
60
|
+
"properties": {
|
|
61
|
+
"projectRoot": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"minLength": 1
|
|
64
|
+
},
|
|
65
|
+
"codeStructurePath": {
|
|
66
|
+
"type": "string"
|
|
67
|
+
},
|
|
68
|
+
"codeStructureHome": {
|
|
69
|
+
"type": ["string", "null"]
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"modules": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"minItems": 1,
|
|
76
|
+
"items": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": true,
|
|
79
|
+
"required": ["id", "files", "derivedFrom"],
|
|
80
|
+
"properties": {
|
|
81
|
+
"id": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"minLength": 1
|
|
84
|
+
},
|
|
85
|
+
"name": {
|
|
86
|
+
"type": ["string", "null"]
|
|
87
|
+
},
|
|
88
|
+
"purpose": {
|
|
89
|
+
"type": ["string", "null"]
|
|
90
|
+
},
|
|
91
|
+
"pathGlobs": {
|
|
92
|
+
"type": "array",
|
|
93
|
+
"items": {
|
|
94
|
+
"type": "string",
|
|
95
|
+
"minLength": 1
|
|
96
|
+
}
|
|
97
|
+
},
|
|
98
|
+
"fileCount": {
|
|
99
|
+
"type": "integer",
|
|
100
|
+
"minimum": 0
|
|
101
|
+
},
|
|
102
|
+
"files": {
|
|
103
|
+
"type": "array",
|
|
104
|
+
"items": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"minLength": 1
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
"derivedFrom": {
|
|
110
|
+
"type": "object",
|
|
111
|
+
"additionalProperties": true
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
},
|
|
116
|
+
"coupling": {
|
|
117
|
+
"type": "array",
|
|
118
|
+
"items": {
|
|
119
|
+
"type": "object",
|
|
120
|
+
"additionalProperties": true,
|
|
121
|
+
"required": ["from", "to", "derivedFrom"],
|
|
122
|
+
"properties": {
|
|
123
|
+
"from": {
|
|
124
|
+
"type": "string",
|
|
125
|
+
"minLength": 1
|
|
126
|
+
},
|
|
127
|
+
"to": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"minLength": 1
|
|
130
|
+
},
|
|
131
|
+
"derivedFrom": {
|
|
132
|
+
"type": "string",
|
|
133
|
+
"minLength": 1
|
|
134
|
+
},
|
|
135
|
+
"confidence": {
|
|
136
|
+
"type": "string"
|
|
137
|
+
},
|
|
138
|
+
"evidence": {
|
|
139
|
+
"type": "array"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
"entryPoints": {
|
|
145
|
+
"type": "array",
|
|
146
|
+
"items": {
|
|
147
|
+
"type": "object",
|
|
148
|
+
"additionalProperties": true,
|
|
149
|
+
"required": ["path", "module", "derivedFrom"],
|
|
150
|
+
"properties": {
|
|
151
|
+
"path": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"minLength": 1
|
|
154
|
+
},
|
|
155
|
+
"module": {
|
|
156
|
+
"type": "string",
|
|
157
|
+
"minLength": 1
|
|
158
|
+
},
|
|
159
|
+
"derivedFrom": {
|
|
160
|
+
"type": "string",
|
|
161
|
+
"minLength": 1
|
|
162
|
+
},
|
|
163
|
+
"confidence": {
|
|
164
|
+
"type": "string"
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
},
|
|
169
|
+
"languageDistribution": {
|
|
170
|
+
"type": "array",
|
|
171
|
+
"items": {
|
|
172
|
+
"type": "object",
|
|
173
|
+
"additionalProperties": true,
|
|
174
|
+
"required": ["language", "files", "derivedFrom"],
|
|
175
|
+
"properties": {
|
|
176
|
+
"language": {
|
|
177
|
+
"type": "string",
|
|
178
|
+
"minLength": 1
|
|
179
|
+
},
|
|
180
|
+
"files": {
|
|
181
|
+
"type": "integer",
|
|
182
|
+
"minimum": 0
|
|
183
|
+
},
|
|
184
|
+
"derivedFrom": {
|
|
185
|
+
"type": "string",
|
|
186
|
+
"minLength": 1
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
"degraded": {
|
|
192
|
+
"type": "array",
|
|
193
|
+
"items": {
|
|
194
|
+
"type": "object",
|
|
195
|
+
"additionalProperties": true,
|
|
196
|
+
"required": ["code", "message"],
|
|
197
|
+
"properties": {
|
|
198
|
+
"code": {
|
|
199
|
+
"type": "string",
|
|
200
|
+
"minLength": 1
|
|
201
|
+
},
|
|
202
|
+
"message": {
|
|
203
|
+
"type": "string",
|
|
204
|
+
"minLength": 1
|
|
205
|
+
},
|
|
206
|
+
"module": {
|
|
207
|
+
"type": "string"
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://deft.dev/schemas/lessons-pack-0.1.schema.json",
|
|
4
|
+
"title": "Lessons Pack 0.1",
|
|
5
|
+
"description": "Canonical source schema for the lessons-pack-0.1 tier-3 extension pack (#1294, design #1283, ADR-001). The structured JSON at packs/lessons/lessons-pack-0.1.json is the SOURCE OF TRUTH; meta/lessons.md is a regenerated, drift-checked projection (scripts/pack_render.py). The `x-sliceRegistry` block is the schema-declared, agent-facing slice API: a named-slice registry mapping slice name -> { path (a constrained dotted path into the source -- NOT JSONPath), filters[] (a fixed filter vocabulary), description }. Agents query by slice NAME only; the dotted path + filter dialect are pack-author implementation detail (the ADR-001 Example-6 reconciliation). The `x-tagVocabulary` enumerates the controlled tag set that scripts/pack_migrate_lessons.py assigns from.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["pack", "version", "lessons"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"pack": {
|
|
11
|
+
"const": "lessons-pack-0.1",
|
|
12
|
+
"description": "Versioned pack identifier. The version lives in the name per #1283 Q6 (pack version is part of the pack name)."
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"const": "0.1",
|
|
16
|
+
"description": "Pack major.minor, mirrored from the pack name suffix."
|
|
17
|
+
},
|
|
18
|
+
"generated_from": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Provenance: the source markdown path the one-shot migration (scripts/pack_migrate_lessons.py) parsed to build this pack (e.g. meta/lessons.md)."
|
|
21
|
+
},
|
|
22
|
+
"lessons": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"description": "The lesson entries. Order is the source-document order and is the render order; the renderer emits `## {title}\\n\\n{body}` for each entry in this order.",
|
|
25
|
+
"items": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"required": ["id", "title", "date", "issue_refs", "tags", "source", "body"],
|
|
29
|
+
"properties": {
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
34
|
+
"description": "Stable, unique, deterministic slug derived from the title."
|
|
35
|
+
},
|
|
36
|
+
"title": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"description": "The full human heading text (everything after the leading `## `), stored verbatim so the projection round-trips exactly. The parenthetical date / issue ref is intentionally retained in the title; `date` and `issue_refs` are convenience-extracted copies."
|
|
40
|
+
},
|
|
41
|
+
"date": {
|
|
42
|
+
"type": ["string", "null"],
|
|
43
|
+
"pattern": "^\\d{4}-\\d{2}$",
|
|
44
|
+
"description": "Year-month (YYYY-MM) extracted from the title parenthetical, or null when the heading carries no date (e.g. an issue-ref-only heading). The `since` filter compares against this field; null-dated entries are excluded from `recent`."
|
|
45
|
+
},
|
|
46
|
+
"issue_refs": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"description": "All `#NNN` issue references found in the title, in order of appearance.",
|
|
49
|
+
"items": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"pattern": "^#\\d+$"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"tags": {
|
|
55
|
+
"type": "array",
|
|
56
|
+
"minItems": 1,
|
|
57
|
+
"maxItems": 3,
|
|
58
|
+
"description": "1-3 tags from the controlled x-tagVocabulary, assigned by the migration from title/body keywords. The `by-tag` slice filters on this field.",
|
|
59
|
+
"items": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"enum": [
|
|
62
|
+
"windows",
|
|
63
|
+
"encoding",
|
|
64
|
+
"review-cycle",
|
|
65
|
+
"swarm",
|
|
66
|
+
"release",
|
|
67
|
+
"github",
|
|
68
|
+
"context",
|
|
69
|
+
"debugging",
|
|
70
|
+
"lifecycle",
|
|
71
|
+
"powershell",
|
|
72
|
+
"ci",
|
|
73
|
+
"agent-orchestration"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"source": {
|
|
78
|
+
"type": ["string", "null"],
|
|
79
|
+
"description": "The text of the entry's `**Source:**` line (the provenance line authored in the lesson body), or null when the entry has no Source line. The full Source line is also retained verbatim inside `body`; this is a convenience-extracted copy."
|
|
80
|
+
},
|
|
81
|
+
"body": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"description": "The full section body markdown (everything after the heading up to the next `## ` heading), stored verbatim as a lossless blob. Numbered sub-lessons are intentionally NOT decomposed into fields -- body-as-blob keeps the migration lossless."
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"x-tagVocabulary": [
|
|
90
|
+
"windows",
|
|
91
|
+
"encoding",
|
|
92
|
+
"review-cycle",
|
|
93
|
+
"swarm",
|
|
94
|
+
"release",
|
|
95
|
+
"github",
|
|
96
|
+
"context",
|
|
97
|
+
"debugging",
|
|
98
|
+
"lifecycle",
|
|
99
|
+
"powershell",
|
|
100
|
+
"ci",
|
|
101
|
+
"agent-orchestration"
|
|
102
|
+
],
|
|
103
|
+
"x-display": {
|
|
104
|
+
"heading": "title",
|
|
105
|
+
"fields": [],
|
|
106
|
+
"body": "body",
|
|
107
|
+
"noun": "lessons"
|
|
108
|
+
},
|
|
109
|
+
"x-sliceRegistry": {
|
|
110
|
+
"recent": {
|
|
111
|
+
"path": "lessons",
|
|
112
|
+
"filters": ["since"],
|
|
113
|
+
"description": "Lessons dated on or after --since (YYYY-MM or YYYY-MM-DD). Null-dated entries are excluded."
|
|
114
|
+
},
|
|
115
|
+
"by-tag": {
|
|
116
|
+
"path": "lessons",
|
|
117
|
+
"filters": ["tag"],
|
|
118
|
+
"description": "Lessons carrying any of the requested --tag values (repeatable or comma-listed)."
|
|
119
|
+
},
|
|
120
|
+
"by-issue": {
|
|
121
|
+
"path": "lessons",
|
|
122
|
+
"filters": ["issue"],
|
|
123
|
+
"description": "Lessons whose issue_refs include any of the requested --issue values (bare or hashed, e.g. 754 or #754; repeatable or comma-listed)."
|
|
124
|
+
},
|
|
125
|
+
"anti-patterns": {
|
|
126
|
+
"path": "lessons",
|
|
127
|
+
"filters": [],
|
|
128
|
+
"select": {
|
|
129
|
+
"body_contains_any": ["anti-pattern", "anti pattern", "must not", "\u2297"]
|
|
130
|
+
},
|
|
131
|
+
"description": "Lessons whose body calls out an anti-pattern (RFC2119 prohibition markers / 'anti-pattern' guidance). Argument-less."
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://deft.dev/schemas/patterns-pack-0.1.schema.json",
|
|
4
|
+
"title": "Patterns Pack 0.1",
|
|
5
|
+
"description": "Canonical source schema for the patterns-pack-0.1 tier-3 extension pack (#1637, design #1283, ADR-001, generalizing the #1294 lessons pilot + #1295 skills pack + #1296 rules/strategies packs). The structured JSON at packs/patterns/patterns-pack-0.1.json is the SOURCE OF TRUTH for architectural-pattern ROUTING METADATA: for every patterns/*.md it records id (the doc stem), title (the leading `# ` heading), description (the leading description paragraph), triggers (the pattern stem as an invocation keyword, used by the `by-trigger` slice), and the path. Exactly one designated proof pattern (patterns/multi-agent.md) also carries its full body so its markdown can be regenerated as a banner-marked, drift-checked projection (scripts/pack_render.py); every other entry is metadata-only (body null) and keeps its hand-authored markdown. The `x-sliceRegistry` block is the schema-declared, agent-facing slice API (mirrors lessons + skills + strategies): a named-slice registry mapping slice name -> { path (a constrained dotted path into the source -- NOT JSONPath), filters[] (the fixed trigger vocabulary), description }. Agents query by slice NAME only. The `x-display` block declares how scripts/packs_slice.py renders an entry as text (heading field, labelled metadata fields, optional body field, and the empty-result noun) so the slice formatter stays pack-agnostic.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["pack", "version", "patterns"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"pack": {
|
|
11
|
+
"const": "patterns-pack-0.1",
|
|
12
|
+
"description": "Versioned pack identifier. The version lives in the name per #1283 Q6 (pack version is part of the pack name)."
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"const": "0.1",
|
|
16
|
+
"description": "Pack major.minor, mirrored from the pack name suffix."
|
|
17
|
+
},
|
|
18
|
+
"generated_from": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Provenance: the sources the one-shot migration (scripts/pack_migrate_patterns.py) parsed to build this pack (patterns/*.md)."
|
|
21
|
+
},
|
|
22
|
+
"patterns": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"description": "One entry per discovered pattern doc (patterns/*.md). Order is the sorted path order.",
|
|
25
|
+
"items": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"required": ["id", "title", "description", "triggers", "path", "body"],
|
|
29
|
+
"properties": {
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
34
|
+
"description": "Pattern id: the slugified doc stem (e.g. multi-agent, role-as-overlay, llm-app)."
|
|
35
|
+
},
|
|
36
|
+
"title": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"description": "The pattern's leading `# ` heading text, stored verbatim."
|
|
40
|
+
},
|
|
41
|
+
"description": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"description": "The leading description paragraph after the title (Legend / See-also / chrome lines skipped), folded to a single normalised string. Empty when the doc has no leading paragraph."
|
|
44
|
+
},
|
|
45
|
+
"triggers": {
|
|
46
|
+
"type": "array",
|
|
47
|
+
"description": "Invocation keywords for this pattern (the doc stem). Empty when the pattern has no derivable trigger. The `by-trigger` slice filters on this field.",
|
|
48
|
+
"items": {
|
|
49
|
+
"type": "string",
|
|
50
|
+
"minLength": 1
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"path": {
|
|
54
|
+
"type": "string",
|
|
55
|
+
"pattern": "^patterns/.+\\.md$",
|
|
56
|
+
"description": "Repo-relative path to the pattern markdown."
|
|
57
|
+
},
|
|
58
|
+
"body": {
|
|
59
|
+
"type": ["string", "null"],
|
|
60
|
+
"description": "Full pattern body (banner-stripped, verbatim) for the ONE designated proof pattern (patterns/multi-agent.md); null for metadata-only entries. The renderer reconstructs the proof = banner + body."
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
"x-display": {
|
|
67
|
+
"heading": "id",
|
|
68
|
+
"fields": ["title", "description", "triggers", "path"],
|
|
69
|
+
"body": null,
|
|
70
|
+
"noun": "patterns"
|
|
71
|
+
},
|
|
72
|
+
"x-sliceRegistry": {
|
|
73
|
+
"by-trigger": {
|
|
74
|
+
"path": "patterns",
|
|
75
|
+
"filters": ["trigger"],
|
|
76
|
+
"description": "Patterns whose invocation keywords include any of the requested --trigger values (case-insensitive, repeatable or comma-listed)."
|
|
77
|
+
},
|
|
78
|
+
"list": {
|
|
79
|
+
"path": "patterns",
|
|
80
|
+
"filters": [],
|
|
81
|
+
"description": "Every pattern with its title, description, triggers, and path."
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://deft.dev/schemas/rules-pack-0.1.schema.json",
|
|
4
|
+
"title": "Rules Pack 0.1",
|
|
5
|
+
"description": "Canonical source schema for the rules-pack-0.1 tier-3 extension pack (#1296, design #1283, ADR-001, generalizing the #1294 lessons pilot + #1295 skills pack; source coverage broadened in #1637 s4). The structured JSON at packs/rules/rules-pack-0.1.json is the SOURCE OF TRUTH for the RFC2119-tiered directives parsed from coding/*.md plus AGENTS.md and main.md: for every marker-prefixed directive line it records id, tier (normalized from the RFC2119 legend per #748: !=MUST, ~=SHOULD, the SHOULD-NOT glyph=SHOULD_NOT, the MUST-NOT glyph=MUST_NOT, ?=MAY), domain (the source doc stem -- testing/security/hygiene/coding/toolchain/debugging/agents/main/...), the directive text, and the path. Every coding/*.md doc carries its full body on its first rule entry so each coding doc is regenerated as a banner-marked, drift-checked projection (scripts/pack_render.py). AGENTS.md and main.md are ingested as directive METADATA ONLY (body null, never rendered) -- the renderer skips null-body entries so AGENTS.md stays owned solely by `task agents:refresh`; AGENTS.md's managed-section block is excluded from extraction (rendered mirror of templates/agents-entry.md, not canonical). The `x-sliceRegistry` block is the schema-declared, agent-facing slice API (mirrors lessons + skills): a named-slice registry mapping slice name -> { path (a constrained dotted path into the source -- NOT JSONPath), filters[] (the fixed tier/domain vocabulary), description }. Agents query by slice NAME only. The `x-display` block declares how scripts/packs_slice.py renders an entry as text (heading field, labelled metadata fields, optional body field, and the empty-result noun) so the slice formatter stays pack-agnostic. The `x-tierVocabulary` enumerates the controlled tier set.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["pack", "version", "rules"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"pack": {
|
|
11
|
+
"const": "rules-pack-0.1",
|
|
12
|
+
"description": "Versioned pack identifier. The version lives in the name per #1283 Q6 (pack version is part of the pack name)."
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"const": "0.1",
|
|
16
|
+
"description": "Pack major.minor, mirrored from the pack name suffix."
|
|
17
|
+
},
|
|
18
|
+
"generated_from": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Provenance: the sources the one-shot migration (scripts/pack_migrate_rules.py) parsed to build this pack (coding/*.md + AGENTS.md + main.md marker-prefixed directives)."
|
|
21
|
+
},
|
|
22
|
+
"rules": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"description": "One entry per parsed directive (marker-prefixed `- ! ...` / `- ~ ...` / `- (SHOULD-NOT) ...` / `- (MUST-NOT) ...` / `- ? ...` lines, plus prose RFC2119 MUST/SHOULD bullets). Order is sorted source-doc path then in-document order.",
|
|
25
|
+
"items": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"required": ["id", "tier", "domain", "text", "path", "body"],
|
|
29
|
+
"properties": {
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
34
|
+
"description": "Stable, unique, deterministic slug: `{domain}-{NNN}` (in-document order, 1-based, zero-padded)."
|
|
35
|
+
},
|
|
36
|
+
"tier": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"enum": ["MUST", "SHOULD", "SHOULD_NOT", "MUST_NOT", "MAY"],
|
|
39
|
+
"description": "RFC2119 strength normalized from the coding/* legend marker (#748). The `by-tier` slice filters on this field."
|
|
40
|
+
},
|
|
41
|
+
"domain": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"minLength": 1,
|
|
44
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
45
|
+
"description": "Source doc stem (e.g. testing, security, hygiene, coding, toolchain, debugging, build-output, holzmann, agents, main). The `by-domain` slice filters on this field."
|
|
46
|
+
},
|
|
47
|
+
"text": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"minLength": 1,
|
|
50
|
+
"description": "The directive text (everything after the strength marker), stored verbatim."
|
|
51
|
+
},
|
|
52
|
+
"path": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"pattern": "^(?:coding/.+\\.md|AGENTS\\.md|main\\.md)$",
|
|
55
|
+
"description": "Repo-relative path to the source doc: a coding/*.md doc, or AGENTS.md / main.md (#1637 s4). coding/*.md entries are body-rendered projections; AGENTS.md / main.md entries are metadata-only (body null, never rendered)."
|
|
56
|
+
},
|
|
57
|
+
"body": {
|
|
58
|
+
"type": ["string", "null"],
|
|
59
|
+
"description": "Full source-document body (banner-stripped, verbatim) for EACH coding/*.md doc's first rule entry, so every coding doc reconstructs as banner + body (#1637 s4 broadened the single coding/testing.md proof to all coding docs). null for every other coding entry AND for ALL AGENTS.md / main.md entries -- the renderer skips null-body entries so AGENTS.md stays owned solely by `task agents:refresh`."
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"x-tierVocabulary": ["MUST", "SHOULD", "SHOULD_NOT", "MUST_NOT", "MAY"],
|
|
66
|
+
"x-display": {
|
|
67
|
+
"heading": "id",
|
|
68
|
+
"fields": ["tier", "domain", "text", "path"],
|
|
69
|
+
"body": null,
|
|
70
|
+
"noun": "rules"
|
|
71
|
+
},
|
|
72
|
+
"x-sliceRegistry": {
|
|
73
|
+
"by-tier": {
|
|
74
|
+
"path": "rules",
|
|
75
|
+
"filters": ["tier"],
|
|
76
|
+
"description": "Rules whose RFC2119 tier matches any of the requested --tier values (e.g. MUST, MUST_NOT; case-insensitive, repeatable or comma-listed)."
|
|
77
|
+
},
|
|
78
|
+
"by-domain": {
|
|
79
|
+
"path": "rules",
|
|
80
|
+
"filters": ["domain"],
|
|
81
|
+
"description": "Rules from any of the requested --domain source docs (e.g. testing, security; case-insensitive, repeatable or comma-listed)."
|
|
82
|
+
},
|
|
83
|
+
"list": {
|
|
84
|
+
"path": "rules",
|
|
85
|
+
"filters": [],
|
|
86
|
+
"description": "Every rule with its tier, domain, text, and source path."
|
|
87
|
+
},
|
|
88
|
+
"must": {
|
|
89
|
+
"path": "rules",
|
|
90
|
+
"filters": [],
|
|
91
|
+
"select": {
|
|
92
|
+
"tier_in": ["MUST"]
|
|
93
|
+
},
|
|
94
|
+
"description": "Rules at the MUST tier only. Argument-less convenience over by-tier --tier MUST."
|
|
95
|
+
},
|
|
96
|
+
"prohibitions": {
|
|
97
|
+
"path": "rules",
|
|
98
|
+
"filters": [],
|
|
99
|
+
"select": {
|
|
100
|
+
"tier_in": ["MUST_NOT", "SHOULD_NOT"]
|
|
101
|
+
},
|
|
102
|
+
"description": "Prohibition rules (MUST_NOT / SHOULD_NOT tiers) -- the anti-pattern surface for rules. Argument-less."
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://deft.dev/schemas/skills-pack-0.1.schema.json",
|
|
4
|
+
"title": "Skills Pack 0.1",
|
|
5
|
+
"description": "Canonical source schema for the skills-pack-0.1 tier-3 extension pack (#1295, design #1283, ADR-001, generalizing the #1294 lessons pilot). The structured JSON at packs/skills/skills-pack-0.1.json is the SOURCE OF TRUTH for skill ROUTING METADATA: for every skill under skills/*/SKILL.md it records id (== the frontmatter name), description, the routing triggers resolved from the AGENTS.md Skill Routing table, the path, and the version. Exactly one designated proof skill also carries its full body so its SKILL.md can be regenerated as a banner-marked, drift-checked projection (scripts/pack_render.py); every other entry is metadata-only (body null) and keeps its hand-authored SKILL.md. The `x-sliceRegistry` block is the schema-declared, agent-facing slice API (mirrors the lessons pack): a named-slice registry mapping slice name -> { path (a constrained dotted path into the source -- NOT JSONPath), filters[] (the fixed since/tag/trigger vocabulary), description }. Agents query by slice NAME only. The `x-display` block declares how scripts/packs_slice.py renders an entry as text (heading field, labelled metadata fields, optional body field, and the noun used in the empty-result line) so the slice formatter is pack-agnostic.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": ["pack", "version", "skills"],
|
|
9
|
+
"properties": {
|
|
10
|
+
"pack": {
|
|
11
|
+
"const": "skills-pack-0.1",
|
|
12
|
+
"description": "Versioned pack identifier. The version lives in the name per #1283 Q6 (pack version is part of the pack name)."
|
|
13
|
+
},
|
|
14
|
+
"version": {
|
|
15
|
+
"const": "0.1",
|
|
16
|
+
"description": "Pack major.minor, mirrored from the pack name suffix."
|
|
17
|
+
},
|
|
18
|
+
"generated_from": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Provenance: the sources the one-shot migration (scripts/pack_migrate_skills.py) parsed to build this pack (skills/*/SKILL.md frontmatter + the AGENTS.md Skill Routing table)."
|
|
21
|
+
},
|
|
22
|
+
"skills": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"description": "One entry per discovered skill (skills/*/SKILL.md with YAML frontmatter; deprecated redirect stubs without frontmatter are skipped). Order is the sorted path order.",
|
|
25
|
+
"items": {
|
|
26
|
+
"type": "object",
|
|
27
|
+
"additionalProperties": false,
|
|
28
|
+
"required": ["id", "description", "triggers", "path", "version", "body", "frontmatter_extra"],
|
|
29
|
+
"properties": {
|
|
30
|
+
"id": {
|
|
31
|
+
"type": "string",
|
|
32
|
+
"minLength": 1,
|
|
33
|
+
"pattern": "^[a-z0-9][a-z0-9-]*$",
|
|
34
|
+
"description": "Skill id; equals the YAML frontmatter `name` (e.g. deft-directive-cost)."
|
|
35
|
+
},
|
|
36
|
+
"description": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"minLength": 1,
|
|
39
|
+
"description": "The skill's frontmatter `description`, folded to a single normalised string. The renderer re-emits this as a YAML folded scalar for the proof skill."
|
|
40
|
+
},
|
|
41
|
+
"triggers": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"description": "Routing keywords mapped to this skill's path in the AGENTS.md Skill Routing table, in table order. Empty when the skill has no routing entry. The `by-trigger` slice filters on this field.",
|
|
44
|
+
"items": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"minLength": 1
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"path": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"pattern": "^skills/.+/SKILL\\.md$",
|
|
52
|
+
"description": "Repo-relative path to the skill's SKILL.md."
|
|
53
|
+
},
|
|
54
|
+
"version": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"minLength": 1,
|
|
57
|
+
"description": "Skill version: read from a frontmatter `version:` key when present, else defaulted to 0.1."
|
|
58
|
+
},
|
|
59
|
+
"body": {
|
|
60
|
+
"type": ["string", "null"],
|
|
61
|
+
"description": "Full SKILL.md body (everything after the frontmatter, with any prior provenance banner stripped). Captured for EVERY skill by default (packs:slice v2, #1637) so every skills/*/SKILL.md is a banner-marked, drift-checked projection; null only when the back-compat --proof-skill flag restricted capture to one skill. The renderer reconstructs each skill's SKILL.md = frontmatter + banner + body."
|
|
62
|
+
},
|
|
63
|
+
"frontmatter_extra": {
|
|
64
|
+
"type": ["string", "null"],
|
|
65
|
+
"description": "Verbatim frontmatter lines that are NOT name/description (e.g. triggers:, metadata:, os:). The renderer reconstructs name + a folded description and re-emits this block verbatim so regenerating a projection is LOSSLESS -- no hand-authored frontmatter key is dropped (#1637). Null when a skill carries only name + description."
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"x-display": {
|
|
72
|
+
"heading": "id",
|
|
73
|
+
"fields": ["description", "triggers", "path"],
|
|
74
|
+
"body": null,
|
|
75
|
+
"noun": "skills"
|
|
76
|
+
},
|
|
77
|
+
"x-sliceRegistry": {
|
|
78
|
+
"by-trigger": {
|
|
79
|
+
"path": "skills",
|
|
80
|
+
"filters": ["trigger"],
|
|
81
|
+
"description": "Skills whose routing triggers include any of the requested --trigger keywords (case-insensitive, repeatable or comma-listed)."
|
|
82
|
+
},
|
|
83
|
+
"list": {
|
|
84
|
+
"path": "skills",
|
|
85
|
+
"filters": [],
|
|
86
|
+
"description": "Every skill with its description, routing triggers, and path."
|
|
87
|
+
},
|
|
88
|
+
"by-id": {
|
|
89
|
+
"path": "skills",
|
|
90
|
+
"filters": ["id"],
|
|
91
|
+
"description": "Skills whose id matches any of the requested --id values (e.g. deft-directive-cost; case-insensitive, repeatable or comma-listed)."
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|