skillwiki 0.8.10 → 0.9.1-beta.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/dist/cli.js +51 -5
- package/package.json +1 -1
- package/skills/.claude-plugin/plugin.json +1 -1
- package/skills/.codex-plugin/plugin.json +1 -1
- package/skills/agents/wiki-adapter-prd.md +10 -1
- package/skills/agents/wiki-crystallize.md +9 -0
- package/skills/agents/wiki-ingest.md +9 -0
- package/skills/agents/wiki-query.md +9 -1
- package/skills/package.json +1 -1
- package/skills/skills/wiki-adapter-prd/SKILL.md +10 -1
- package/skills/skills/wiki-crystallize/SKILL.md +9 -0
- package/skills/skills/wiki-ingest/SKILL.md +9 -0
- package/skills/skills/wiki-query/SKILL.md +9 -1
- package/skills/wiki-adapter-prd/SKILL.md +10 -1
- package/skills/wiki-crystallize/SKILL.md +9 -0
- package/skills/wiki-ingest/SKILL.md +9 -0
- package/skills/wiki-query/SKILL.md +9 -1
package/dist/cli.js
CHANGED
|
@@ -184,6 +184,7 @@ var endpointName = z.string().min(1).regex(/^[A-Za-z0-9_.-]+$/, "must be a hostn
|
|
|
184
184
|
var ipAddress = z.string().min(1).regex(/^[0-9a-fA-F:.]+$/, "must be an IP address token");
|
|
185
185
|
var sshAlias = z.string().min(1).regex(/^[A-Za-z0-9_.@-]+$/, "must be an SSH alias token");
|
|
186
186
|
var sshUser = z.string().min(1).regex(/^[A-Za-z0-9_.-]+$/, "must be an SSH user token");
|
|
187
|
+
var absolutePath = z.string().min(1).regex(/^\//, "must be an absolute path");
|
|
187
188
|
var FleetAccessProfileSchema = z.object({
|
|
188
189
|
status: z.enum(["local", "configured", "planned", "absent", "unknown"]),
|
|
189
190
|
ssh_aliases: z.array(sshAlias).optional(),
|
|
@@ -200,6 +201,26 @@ var FleetHostIdentitySchema = z.object({
|
|
|
200
201
|
addresses: z.array(ipAddress).optional()
|
|
201
202
|
}).strict().optional()
|
|
202
203
|
}).strict();
|
|
204
|
+
var FleetSkillwikiSatelliteSchema = z.object({
|
|
205
|
+
enabled: z.boolean(),
|
|
206
|
+
user: sshUser,
|
|
207
|
+
vault_path: absolutePath,
|
|
208
|
+
repo_path: absolutePath,
|
|
209
|
+
ssh_alias: sshAlias,
|
|
210
|
+
scheduler: z.enum(["systemd"]),
|
|
211
|
+
timezone: z.string().min(1).optional(),
|
|
212
|
+
jobs: z.array(z.enum([
|
|
213
|
+
"self-update-check",
|
|
214
|
+
"vault-sync-preflight",
|
|
215
|
+
"agent-memory-trends-daily",
|
|
216
|
+
"session-brief-refresh",
|
|
217
|
+
"health-summary"
|
|
218
|
+
])).min(1),
|
|
219
|
+
cadence: z.object({
|
|
220
|
+
self_update_check: z.literal("every-4-hours").optional(),
|
|
221
|
+
daily_window: z.string().min(1).optional()
|
|
222
|
+
}).strict().optional()
|
|
223
|
+
}).strict();
|
|
203
224
|
var FleetHostSchema = z.object({
|
|
204
225
|
class: z.enum(["dev-macos", "dev-linux", "prod-linux", "unknown"]),
|
|
205
226
|
role: z.enum(["leaf", "snapshotter"]),
|
|
@@ -208,6 +229,9 @@ var FleetHostSchema = z.object({
|
|
|
208
229
|
identity: FleetHostIdentitySchema,
|
|
209
230
|
access: z.object({
|
|
210
231
|
from: z.record(hostId, FleetAccessProfileSchema).optional()
|
|
232
|
+
}).strict().optional(),
|
|
233
|
+
maintenance: z.object({
|
|
234
|
+
skillwiki_satellite: FleetSkillwikiSatelliteSchema.optional()
|
|
211
235
|
}).strict().optional()
|
|
212
236
|
}).strict();
|
|
213
237
|
var FleetManifestSchema = z.object({
|
|
@@ -9625,7 +9649,8 @@ function formatKnownContext(input) {
|
|
|
9625
9649
|
const protectedValue = host.protected === true ? "true" : "false";
|
|
9626
9650
|
const writesTo = host.writes_to.join(", ");
|
|
9627
9651
|
const selfAliases = collectSelfAliases(input.manifest, input.hostId);
|
|
9628
|
-
const outbound =
|
|
9652
|
+
const outbound = collectOutboundAccess(input.manifest, input.hostId);
|
|
9653
|
+
const maintenanceLines = formatMaintenanceLines(host);
|
|
9629
9654
|
const guidance = input.hostId === "macos-dev" ? "use declared SSH aliases for remote work when needed; do not assume undeclared hosts have reciprocal SSH access." : `this session is already on \`${input.hostId}\`; do not SSH to self aliases unless the user explicitly asks. Do not assume outbound SSH to other fleet hosts is configured.`;
|
|
9630
9655
|
return [
|
|
9631
9656
|
"## Runtime Host Context",
|
|
@@ -9636,8 +9661,9 @@ function formatKnownContext(input) {
|
|
|
9636
9661
|
`- Workspace: ${formatMaybe(input.cwd)}`,
|
|
9637
9662
|
`- Vault: ${formatMaybe(input.vault)}`,
|
|
9638
9663
|
`- Fleet role: \`${host.role}\`; protected: \`${protectedValue}\`; writes_to: \`${writesTo}\``,
|
|
9664
|
+
...maintenanceLines,
|
|
9639
9665
|
`- Self SSH aliases known in fleet: ${formatList(selfAliases)}`,
|
|
9640
|
-
`- Declared outbound SSH from this source: ${
|
|
9666
|
+
`- Declared outbound SSH from this source: ${formatOutboundAccess(outbound)}`,
|
|
9641
9667
|
`- Guidance: ${guidance}`
|
|
9642
9668
|
].join("\n");
|
|
9643
9669
|
}
|
|
@@ -9665,16 +9691,36 @@ function collectSelfAliases(manifest, hostId2) {
|
|
|
9665
9691
|
}
|
|
9666
9692
|
return [...new Set(aliases)];
|
|
9667
9693
|
}
|
|
9668
|
-
function
|
|
9694
|
+
function collectOutboundAccess(manifest, sourceHostId) {
|
|
9669
9695
|
const hosts = [];
|
|
9670
9696
|
for (const [targetId, target] of Object.entries(manifest.hosts)) {
|
|
9671
9697
|
if (targetId === sourceHostId) continue;
|
|
9672
9698
|
const profile = target.access?.from?.[sourceHostId];
|
|
9673
9699
|
if (profile && (profile.status === "configured" || profile.status === "local")) {
|
|
9674
|
-
hosts.push(
|
|
9700
|
+
hosts.push({
|
|
9701
|
+
hostId: targetId,
|
|
9702
|
+
sshAliases: [...new Set(profile.ssh_aliases ?? [])],
|
|
9703
|
+
users: [...new Set(profile.users ?? [])]
|
|
9704
|
+
});
|
|
9675
9705
|
}
|
|
9676
9706
|
}
|
|
9677
|
-
return hosts.sort();
|
|
9707
|
+
return hosts.sort((left, right) => left.hostId.localeCompare(right.hostId));
|
|
9708
|
+
}
|
|
9709
|
+
function formatMaintenanceLines(host) {
|
|
9710
|
+
const satellite = host.maintenance?.skillwiki_satellite;
|
|
9711
|
+
if (!satellite?.enabled) return [];
|
|
9712
|
+
return [
|
|
9713
|
+
`- Maintenance role: \`skillwiki satellite\`; user: \`${satellite.user}\`; ssh: \`${satellite.ssh_alias}\``,
|
|
9714
|
+
`- Maintenance paths: maintenance vault: \`${satellite.vault_path}\`; repo: \`${satellite.repo_path}\`; scheduler: \`${satellite.scheduler}\`; jobs: ${formatList(satellite.jobs)}`
|
|
9715
|
+
];
|
|
9716
|
+
}
|
|
9717
|
+
function formatOutboundAccess(values) {
|
|
9718
|
+
if (values.length === 0) return "none";
|
|
9719
|
+
return values.map((value) => {
|
|
9720
|
+
const aliasPart = value.sshAliases.length > 0 ? ` via ${formatList(value.sshAliases)}` : " (no SSH aliases)";
|
|
9721
|
+
const usersPart = value.users.length > 0 ? ` (users: ${formatList(value.users)})` : "";
|
|
9722
|
+
return `\`${value.hostId}\`${aliasPart}${usersPart}`;
|
|
9723
|
+
}).join("; ");
|
|
9678
9724
|
}
|
|
9679
9725
|
function formatList(values) {
|
|
9680
9726
|
return values.length > 0 ? values.map((v) => `\`${v}\``).join(", ") : "none";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skillwiki",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.1-beta.1",
|
|
4
4
|
"skills": "./",
|
|
5
5
|
"description": "Project-aware Karpathy-style knowledge base for Claude Code: 18 prompt-only skills (wiki-*, proj-*, using-skillwiki) backed by the deterministic `skillwiki` CLI.",
|
|
6
6
|
"author": {
|
|
@@ -36,7 +36,7 @@ You are a PRD format adapter specializing in mapping foreign design document for
|
|
|
36
36
|
| Requirements list | `concepts/` or `entities/` |
|
|
37
37
|
| Architecture decisions | `concepts/` with `tags: [architecture]` |
|
|
38
38
|
| Motivation / context | `entities/` |
|
|
39
|
-
| Trade-offs / comparisons | `comparisons/` |
|
|
39
|
+
| Trade-offs / comparisons | `comparisons/` with a `Decision Closeout` block |
|
|
40
40
|
| Action items / next steps | Skip (project management, not knowledge) |
|
|
41
41
|
|
|
42
42
|
**Execution Process:**
|
|
@@ -51,6 +51,15 @@ You are a PRD format adapter specializing in mapping foreign design document for
|
|
|
51
51
|
- `## TL;DR` as first section
|
|
52
52
|
- Preserve requirement IDs as tags or inline references
|
|
53
53
|
- Convert internal links to `[[wikilinks]]` where pages exist
|
|
54
|
+
- For generated comparison or evaluation pages, end with:
|
|
55
|
+
```markdown
|
|
56
|
+
## Decision Closeout
|
|
57
|
+
|
|
58
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
59
|
+
Reason: ...
|
|
60
|
+
Follow-up: ...
|
|
61
|
+
```
|
|
62
|
+
Use exactly one disposition. Keep skipped action items out of typed knowledge unless the closeout disposition is `work-item`.
|
|
54
63
|
7. **Validate.** `skillwiki validate <page>` for each page. If any non-zero, STOP.
|
|
55
64
|
8. **Apply writes:** raw → pages → `index.md` → `log.md`.
|
|
56
65
|
|
|
@@ -32,6 +32,15 @@ You are a knowledge crystallizer specializing in distilling raw session material
|
|
|
32
32
|
- Citations using `^[raw/...]` markers for every factual claim
|
|
33
33
|
- For pages tagged `architecture` or explaining workflows: a Mermaid diagram (`graph TB` or `sequenceDiagram`)
|
|
34
34
|
- Tags must come from `{vault}/SCHEMA.md` taxonomy only. If no relevant tag exists, use `[dev-loop]`.
|
|
35
|
+
- For `comparison`, evaluation-style `query`, or research-summary pages, end with:
|
|
36
|
+
```markdown
|
|
37
|
+
## Decision Closeout
|
|
38
|
+
|
|
39
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
40
|
+
Reason: ...
|
|
41
|
+
Follow-up: ...
|
|
42
|
+
```
|
|
43
|
+
Use exactly one disposition. Keep this as a prompt/template convention, not validation or lint enforcement.
|
|
35
44
|
6. **Validate.** Run `skillwiki validate <page>`. If non-zero, fix issues and re-validate. Do NOT proceed until validation passes.
|
|
36
45
|
7. **Apply writes in order:** Page file → add entry to `{vault}/index.md` → append entry to `{vault}/log.md`.
|
|
37
46
|
|
|
@@ -34,6 +34,15 @@ You are a vault ingestion specialist converting source material (URLs, files, te
|
|
|
34
34
|
- `^[raw/...]` citations for every factual claim
|
|
35
35
|
- Mermaid diagram if tagged `architecture` or explaining workflows
|
|
36
36
|
- `confidence: low` if only one source cited
|
|
37
|
+
- For generated `comparisons/` pages or evaluation-style `queries/` pages, end with:
|
|
38
|
+
```markdown
|
|
39
|
+
## Decision Closeout
|
|
40
|
+
|
|
41
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
42
|
+
Reason: ...
|
|
43
|
+
Follow-up: ...
|
|
44
|
+
```
|
|
45
|
+
Use exactly one disposition. This is a prompt convention, not a validator rule.
|
|
37
46
|
6. **Validate.** For each page: `skillwiki validate <page>`. If any non-zero, fix issues and re-validate. Do NOT proceed until all pages pass.
|
|
38
47
|
7. **Apply writes in order:** raw file(s) → page(s) → update `index.md` → append `log.md`.
|
|
39
48
|
|
|
@@ -34,7 +34,15 @@ You are a vault search and synthesis specialist using E2 4-signal ranking to fin
|
|
|
34
34
|
- Type affinity: 1.0×
|
|
35
35
|
6. **Read top candidates.** Read frontmatter + body of highest-scored pages.
|
|
36
36
|
7. **Synthesize answer.** Compose with explicit citations to candidate pages using `^[page-path]` markers.
|
|
37
|
-
8. **Optional file.** If the task asks to persist: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` → `log.md`.
|
|
37
|
+
8. **Optional file.** If the task asks to persist: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` → `log.md`. If the filed page is a research/evaluation answer, recommendation, or comparison, end it with:
|
|
38
|
+
```markdown
|
|
39
|
+
## Decision Closeout
|
|
40
|
+
|
|
41
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
42
|
+
Reason: ...
|
|
43
|
+
Follow-up: ...
|
|
44
|
+
```
|
|
45
|
+
Use exactly one disposition. This is a prompt convention only; do not add CLI enforcement here.
|
|
38
46
|
|
|
39
47
|
### Verification Rule
|
|
40
48
|
When a wiki page (especially a work item tasks.md) claims fixes were applied or features completed, **verify on disk before accepting**. Check file existence, grep config, inspect crontab. The filesystem is the source of truth — wiki pages can drift.
|
package/skills/package.json
CHANGED
|
@@ -48,7 +48,7 @@ Map source sections to typed-knowledge pages:
|
|
|
48
48
|
| Requirements list | `concepts/` or `entities/` | Each major requirement becomes its own page or a section in a compound page |
|
|
49
49
|
| Architecture decisions | `concepts/` | Map to concept pages with `tags: [architecture]` |
|
|
50
50
|
| Motivation / context | `entities/` | Capture as entity pages describing the system or component |
|
|
51
|
-
| Trade-offs / comparisons | `comparisons/` | Create comparison pages when the source weighs alternatives |
|
|
51
|
+
| Trade-offs / comparisons | `comparisons/` | Create comparison pages when the source weighs alternatives; include a `Decision Closeout` block |
|
|
52
52
|
| Action items / next steps | Skip | Not knowledge — track in project work items instead |
|
|
53
53
|
|
|
54
54
|
### Cross-reference handling
|
|
@@ -65,6 +65,15 @@ Map source sections to typed-knowledge pages:
|
|
|
65
65
|
3. Write raw capture: frontmatter + full body → `raw/articles/<slug>.md`.
|
|
66
66
|
4. Run `skillwiki hash <raw-file>`, embed sha256.
|
|
67
67
|
5. Generate typed-knowledge pages following the mapping strategy.
|
|
68
|
+
For generated comparison or evaluation pages, end the body with:
|
|
69
|
+
```markdown
|
|
70
|
+
## Decision Closeout
|
|
71
|
+
|
|
72
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
73
|
+
Reason: ...
|
|
74
|
+
Follow-up: ...
|
|
75
|
+
```
|
|
76
|
+
Use exactly one disposition. Preserve action items as skipped project-management content unless the closeout explicitly says `work-item`.
|
|
68
77
|
6. For each page: run `skillwiki validate <page>`. If any fails, STOP.
|
|
69
78
|
7. Write pages, then update `index.md` and `log.md`.
|
|
70
79
|
|
|
@@ -17,6 +17,15 @@ Standard four reads. If cwd is inside `projects/{slug}/`, also read project READ
|
|
|
17
17
|
3. Compose the page with citations pre-attached. Reuse existing `raw/` sources where possible. Every page MUST include:
|
|
18
18
|
- `> **TL;DR:**` blockquote as the first content after the title heading — a one-sentence summary of the page's key takeaway (under 200 chars). See SCHEMA.md `## TL;DR Convention`.
|
|
19
19
|
- For pages tagged `architecture` or explaining workflows/systems: include a Mermaid diagram (`graph TB` or `sequenceDiagram`) in the body. Follow Obsidian-compatible Mermaid rules (see SCHEMA.md `## Mermaid Diagrams`).
|
|
20
|
+
For `comparison`, evaluation-style `query`, or research-summary pages, end the body with:
|
|
21
|
+
```markdown
|
|
22
|
+
## Decision Closeout
|
|
23
|
+
|
|
24
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
25
|
+
Reason: ...
|
|
26
|
+
Follow-up: ...
|
|
27
|
+
```
|
|
28
|
+
Use exactly one disposition. Keep this as a prompt/template convention; do not add validation or lint enforcement.
|
|
20
29
|
4. `skillwiki validate <page>`. If non-zero, STOP.
|
|
21
30
|
5. Apply writes: page → `index.md` → `log.md`.
|
|
22
31
|
## Stop conditions
|
|
@@ -23,6 +23,15 @@ Run `skillwiki lang` at the start. Generate page-body prose, narrative sections,
|
|
|
23
23
|
5. **Generate page(s).** Compose typed-knowledge page(s) with citations pre-attached (`^[raw/...]` markers). Every page MUST include:
|
|
24
24
|
- `> **TL;DR:**` blockquote as the first content after the title heading — a one-sentence summary of the page's key takeaway (under 200 chars). See SCHEMA.md `## TL;DR Convention`.
|
|
25
25
|
- For pages tagged `architecture` or explaining workflows/systems: include a Mermaid diagram (`graph TB` or `sequenceDiagram`) in the body. Follow Obsidian-compatible Mermaid rules (see SCHEMA.md `## Mermaid Diagrams`).
|
|
26
|
+
For generated `comparisons/` pages or evaluation-style `queries/` pages, end the body with:
|
|
27
|
+
```markdown
|
|
28
|
+
## Decision Closeout
|
|
29
|
+
|
|
30
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
31
|
+
Reason: ...
|
|
32
|
+
Follow-up: ...
|
|
33
|
+
```
|
|
34
|
+
Use exactly one disposition. Keep this as a prompt convention, not a validator rule.
|
|
26
35
|
6. **Validate.** For each generated page: run `skillwiki validate <page>`. If exit ≠ 0, STOP — do not write index/log.
|
|
27
36
|
7. **Apply writes in order.** raw → page(s) → `index.md` → `log.md`.
|
|
28
37
|
8. **Confidence flag.** If only one source is cited, set `confidence: low`.
|
|
@@ -22,7 +22,15 @@ Standard four reads (SCHEMA, index, log, project context if applicable).
|
|
|
22
22
|
- Type affinity: 1.0×
|
|
23
23
|
5. **Read top candidates** in full (frontmatter + body).
|
|
24
24
|
6. **Synthesize answer** with explicit citations to the candidate pages.
|
|
25
|
-
7. **Optional file.** If user accepts: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` then `log.md`.
|
|
25
|
+
7. **Optional file.** If user accepts: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` then `log.md`. If the filed page is a research/evaluation answer, recommendation, or comparison, end it with:
|
|
26
|
+
```markdown
|
|
27
|
+
## Decision Closeout
|
|
28
|
+
|
|
29
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
30
|
+
Reason: ...
|
|
31
|
+
Follow-up: ...
|
|
32
|
+
```
|
|
33
|
+
Use exactly one disposition. This is a prompt convention only; do not add CLI enforcement here.
|
|
26
34
|
## Stop conditions
|
|
27
35
|
- Zero matching pages.
|
|
28
36
|
- User declines to file.
|
|
@@ -48,7 +48,7 @@ Map source sections to typed-knowledge pages:
|
|
|
48
48
|
| Requirements list | `concepts/` or `entities/` | Each major requirement becomes its own page or a section in a compound page |
|
|
49
49
|
| Architecture decisions | `concepts/` | Map to concept pages with `tags: [architecture]` |
|
|
50
50
|
| Motivation / context | `entities/` | Capture as entity pages describing the system or component |
|
|
51
|
-
| Trade-offs / comparisons | `comparisons/` | Create comparison pages when the source weighs alternatives |
|
|
51
|
+
| Trade-offs / comparisons | `comparisons/` | Create comparison pages when the source weighs alternatives; include a `Decision Closeout` block |
|
|
52
52
|
| Action items / next steps | Skip | Not knowledge — track in project work items instead |
|
|
53
53
|
|
|
54
54
|
### Cross-reference handling
|
|
@@ -65,6 +65,15 @@ Map source sections to typed-knowledge pages:
|
|
|
65
65
|
3. Write raw capture: frontmatter + full body → `raw/articles/<slug>.md`.
|
|
66
66
|
4. Run `skillwiki hash <raw-file>`, embed sha256.
|
|
67
67
|
5. Generate typed-knowledge pages following the mapping strategy.
|
|
68
|
+
For generated comparison or evaluation pages, end the body with:
|
|
69
|
+
```markdown
|
|
70
|
+
## Decision Closeout
|
|
71
|
+
|
|
72
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
73
|
+
Reason: ...
|
|
74
|
+
Follow-up: ...
|
|
75
|
+
```
|
|
76
|
+
Use exactly one disposition. Preserve action items as skipped project-management content unless the closeout explicitly says `work-item`.
|
|
68
77
|
6. For each page: run `skillwiki validate <page>`. If any fails, STOP.
|
|
69
78
|
7. Write pages, then update `index.md` and `log.md`.
|
|
70
79
|
|
|
@@ -17,6 +17,15 @@ Standard four reads. If cwd is inside `projects/{slug}/`, also read project READ
|
|
|
17
17
|
3. Compose the page with citations pre-attached. Reuse existing `raw/` sources where possible. Every page MUST include:
|
|
18
18
|
- `> **TL;DR:**` blockquote as the first content after the title heading — a one-sentence summary of the page's key takeaway (under 200 chars). See SCHEMA.md `## TL;DR Convention`.
|
|
19
19
|
- For pages tagged `architecture` or explaining workflows/systems: include a Mermaid diagram (`graph TB` or `sequenceDiagram`) in the body. Follow Obsidian-compatible Mermaid rules (see SCHEMA.md `## Mermaid Diagrams`).
|
|
20
|
+
For `comparison`, evaluation-style `query`, or research-summary pages, end the body with:
|
|
21
|
+
```markdown
|
|
22
|
+
## Decision Closeout
|
|
23
|
+
|
|
24
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
25
|
+
Reason: ...
|
|
26
|
+
Follow-up: ...
|
|
27
|
+
```
|
|
28
|
+
Use exactly one disposition. Keep this as a prompt/template convention; do not add validation or lint enforcement.
|
|
20
29
|
4. `skillwiki validate <page>`. If non-zero, STOP.
|
|
21
30
|
5. Apply writes: page → `index.md` → `log.md`.
|
|
22
31
|
## Stop conditions
|
|
@@ -23,6 +23,15 @@ Run `skillwiki lang` at the start. Generate page-body prose, narrative sections,
|
|
|
23
23
|
5. **Generate page(s).** Compose typed-knowledge page(s) with citations pre-attached (`^[raw/...]` markers). Every page MUST include:
|
|
24
24
|
- `> **TL;DR:**` blockquote as the first content after the title heading — a one-sentence summary of the page's key takeaway (under 200 chars). See SCHEMA.md `## TL;DR Convention`.
|
|
25
25
|
- For pages tagged `architecture` or explaining workflows/systems: include a Mermaid diagram (`graph TB` or `sequenceDiagram`) in the body. Follow Obsidian-compatible Mermaid rules (see SCHEMA.md `## Mermaid Diagrams`).
|
|
26
|
+
For generated `comparisons/` pages or evaluation-style `queries/` pages, end the body with:
|
|
27
|
+
```markdown
|
|
28
|
+
## Decision Closeout
|
|
29
|
+
|
|
30
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
31
|
+
Reason: ...
|
|
32
|
+
Follow-up: ...
|
|
33
|
+
```
|
|
34
|
+
Use exactly one disposition. Keep this as a prompt convention, not a validator rule.
|
|
26
35
|
6. **Validate.** For each generated page: run `skillwiki validate <page>`. If exit ≠ 0, STOP — do not write index/log.
|
|
27
36
|
7. **Apply writes in order.** raw → page(s) → `index.md` → `log.md`.
|
|
28
37
|
8. **Confidence flag.** If only one source is cited, set `confidence: low`.
|
|
@@ -22,7 +22,15 @@ Standard four reads (SCHEMA, index, log, project context if applicable).
|
|
|
22
22
|
- Type affinity: 1.0×
|
|
23
23
|
5. **Read top candidates** in full (frontmatter + body).
|
|
24
24
|
6. **Synthesize answer** with explicit citations to the candidate pages.
|
|
25
|
-
7. **Optional file.** If user accepts: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` then `log.md`.
|
|
25
|
+
7. **Optional file.** If user accepts: write to `queries/<slug>.md` or `comparisons/<slug>.md` with full frontmatter, validate, then update `index.md` then `log.md`. If the filed page is a research/evaluation answer, recommendation, or comparison, end it with:
|
|
26
|
+
```markdown
|
|
27
|
+
## Decision Closeout
|
|
28
|
+
|
|
29
|
+
Disposition: no-op | concept | ADR | work-item | evidence-needed
|
|
30
|
+
Reason: ...
|
|
31
|
+
Follow-up: ...
|
|
32
|
+
```
|
|
33
|
+
Use exactly one disposition. This is a prompt convention only; do not add CLI enforcement here.
|
|
26
34
|
## Stop conditions
|
|
27
35
|
- Zero matching pages.
|
|
28
36
|
- User declines to file.
|