@ericrisco/rsc 0.1.33 → 0.1.35
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/README.md +20 -0
- package/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/agent-eval/SKILL.md +1 -1
- package/skills/analyze/SKILL.md +1 -1
- package/skills/brand-voice/SKILL.md +1 -1
- package/skills/brand-voice/references/voice-guide-template.md +14 -0
- package/skills/building-agents/SKILL.md +2 -2
- package/skills/competitor-watch/SKILL.md +9 -4
- package/skills/competitor-watch/references/tracker-schema.md +19 -0
- package/skills/constitution/references/constitution-template.md +10 -0
- package/skills/content-engine/SKILL.md +1 -1
- package/skills/content-engine/references/brief-and-pipeline.md +15 -1
- package/skills/course-builder/references/grounding-and-scoping.md +23 -0
- package/skills/course-storytelling/references/learner-grounding.md +22 -2
- package/skills/decision-records/SKILL.md +14 -1
- package/skills/decision-records/references/templates.md +20 -0
- package/skills/design/references/brand-grounding.md +11 -1
- package/skills/harness/SKILL.md +3 -3
- package/skills/harness/references/daily-curation-automation.md +8 -6
- package/skills/harness/references/obsidian-scaffolding.md +16 -9
- package/skills/harness/references/wiki-article-template.md +31 -14
- package/skills/harness/references/wiki-index-template.md +7 -3
- package/skills/harness/references/wiki-protocol.md +120 -54
- package/skills/harness/references/wiki-worklog-template.md +5 -1
- package/skills/instagram-api/SKILL.md +8 -1
- package/skills/instagram-api/references/insights-metrics.md +8 -1
- package/skills/knowledge-ops/SKILL.md +9 -9
- package/skills/knowledge-ops/evals/cases.yaml +1 -1
- package/skills/knowledge-ops/references/gardening-playbook.md +18 -8
- package/skills/linkedin-api/SKILL.md +10 -1
- package/skills/linkedin-strategy/SKILL.md +12 -0
- package/skills/linkedin-strategy/references/wiki-records.md +27 -1
- package/skills/marketing/references/brand-grounding.md +22 -2
- package/skills/medium-strategy/SKILL.md +12 -0
- package/skills/medium-strategy/references/wiki-records.md +39 -1
- package/skills/medium-writing/SKILL.md +19 -0
- package/skills/plan/references/plan-template.md +12 -1
- package/skills/roast-me/tools/adapters/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/__pycache__/base.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/__pycache__/claude.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/__pycache__/codex.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/__pycache__/gemini.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/__pycache__/registry.cpython-312.pyc +0 -0
- package/skills/roast-me/tools/adapters/base.py +12 -0
- package/skills/roast-me/tools/adapters/codex.py +146 -53
- package/skills/roast-me/tools/adapters/gemini.py +102 -81
- package/skills/roast-me/tools/extract_prompts.py +13 -14
- package/skills/shortform-packaging/SKILL.md +7 -2
- package/skills/shortform-packaging/references/package-templates.md +13 -2
- package/skills/shortform-strategy/SKILL.md +30 -6
- package/skills/shortform-strategy/references/learning-loop-template.md +9 -1
- package/skills/specify/references/spec-template.md +12 -1
- package/skills/tiktok-api/SKILL.md +6 -2
- package/skills/tiktok-api/references/wiki-schema.md +38 -4
- package/skills/verify/SKILL.md +11 -1
- package/skills/youtube-api/SKILL.md +7 -2
- package/skills/youtube-api/references/wiki-schema.md +25 -4
- package/skills/youtube-packaging/SKILL.md +10 -2
- package/skills/youtube-packaging/references/description-and-chapters.md +70 -2
- package/skills/youtube-strategy/SKILL.md +9 -2
- package/skills/youtube-strategy/references/wiki-records.md +39 -6
- package/skills/youtube-strategy/scripts/verify.sh +4 -0
- package/skills/youtube-thumbnails/SKILL.md +10 -5
- package/skills/youtube-thumbnails/references/experiment-log-format.md +28 -2
package/README.md
CHANGED
|
@@ -256,6 +256,26 @@ The front door and the workspace brain.
|
|
|
256
256
|
> self-improving wiki. It governs software *or* a whole company. **orient** is the
|
|
257
257
|
> always-on compass that keeps a non-technical human oriented after every step.
|
|
258
258
|
|
|
259
|
+
> #### 📦 The `02-DOCS/` brain is now 100% Open Knowledge Format (OKF v0.1) conformant
|
|
260
|
+
>
|
|
261
|
+
> Google Cloud published the [**Open Knowledge Format**](https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf)
|
|
262
|
+
> — a vendor-neutral standard for portable, agent-readable knowledge — built on the
|
|
263
|
+
> same Karpathy *LLM-wiki* pattern our `02-DOCS/` engine has used from day one. We
|
|
264
|
+
> independently converged on the same design, so adopting the standard cost almost
|
|
265
|
+
> nothing. As of now, **every `02-DOCS/wiki/` is a valid, portable OKF bundle**:
|
|
266
|
+
>
|
|
267
|
+
> - **Markdown + YAML frontmatter**, `type` on every concept doc, OKF-standard
|
|
268
|
+
> fields (`title`, `description`, `resource`, `tags`, `timestamp`).
|
|
269
|
+
> - **Standard markdown links** (not wikilinks) form the knowledge graph — any OKF
|
|
270
|
+
> consumer reads it, *and* it stays a native Obsidian vault (graph, backlinks,
|
|
271
|
+
> Properties, Bases). Same files, no export step.
|
|
272
|
+
> - **Reserved files** honored: `index.md` (no frontmatter) for navigation,
|
|
273
|
+
> `log.md` (newest-first, ISO 8601) for history.
|
|
274
|
+
>
|
|
275
|
+
> Tarball a `wiki/` and any OKF tool — including Google's own viewer — can read it.
|
|
276
|
+
> And the brain now **keeps your repo clean**: a loose file it ingests (a PDF at the
|
|
277
|
+
> root, anything in `inbox/`) is *moved* into `raw/`, never left as clutter.
|
|
278
|
+
|
|
259
279
|
### 📐 Spec-Driven Development
|
|
260
280
|
Take a fuzzy intent to a shipped, verified change — phase by phase. `npx @ericrisco/rsc install --profile core`.
|
|
261
281
|
|
package/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -199,7 +199,7 @@ Pick by where the eval runs and what it must do. Versions as of 2026-06 — re-v
|
|
|
199
199
|
|
|
200
200
|
## Project grounding
|
|
201
201
|
|
|
202
|
-
If the workspace has a `02-DOCS/` harness, record the eval policy in `02-DOCS/wiki/stack/evals.md`: dataset location, scorer mix, gate baseline file, judge model, and the failure modes covered. Index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer). This is **recorded, not gated** — skip silently if there is no harness.
|
|
202
|
+
If the workspace has a `02-DOCS/` harness, record the eval policy in `02-DOCS/wiki/stack/evals.md`: dataset location, scorer mix, gate baseline file, judge model, and the failure modes covered. Write it as an OKF v0.1 wiki article per the harness [`wiki-article-template.md`](../harness/references/wiki-article-template.md): open with YAML frontmatter carrying a non-empty `type:` (use `type: stack`), `timestamp` in ISO 8601, and standard markdown links — never wikilinks. Index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer). This is **recorded, not gated** — skip silently if there is no harness.
|
|
203
203
|
|
|
204
204
|
## verify.sh
|
|
205
205
|
|
package/skills/analyze/SKILL.md
CHANGED
|
@@ -112,7 +112,7 @@ Produce a single consistency report:
|
|
|
112
112
|
3. **Findings table** — `# | Severity | Type | Artifact A (loc) | Artifact B (loc) | Conflict | Resolve in (phase)`.
|
|
113
113
|
4. **Recommended routing** — group fixes by the phase that owns them (`clarify` for spec ambiguity, `plan` for missing architecture, `tasks` for a missing done-check, `constitution` if a principle itself is wrong).
|
|
114
114
|
|
|
115
|
-
Write the report to `02-DOCS/wiki/sdd/analysis/<slug>.md` (create the dir if absent) and index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer) under the `sdd/` topic, so the next phase and the harness can find it. The report is the artifact analyze owns — it is the *only* thing analyze writes. Per-run point-in-time; overwrite on re-run, the wiki keeps history.
|
|
115
|
+
Write the report to `02-DOCS/wiki/sdd/analysis/<slug>.md` (create the dir if absent) and index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer) under the `sdd/` topic, so the next phase and the harness can find it. It is an OKF v0.1 wiki article: open it with YAML frontmatter carrying a non-empty `type:` (use `type: analysis`), a `timestamp` in ISO 8601, and standard markdown links — never wikilinks. The report is the artifact analyze owns — it is the *only* thing analyze writes. Per-run point-in-time; overwrite on re-run, the wiki keeps history.
|
|
116
116
|
|
|
117
117
|
Adapt the rendered verbosity to the dial (L0 = table only; L3 = full walk-through). Do not log a decision to `decisions.md` — analyze decides nothing; the phase that resolves the finding logs its own decision.
|
|
118
118
|
|
|
@@ -150,7 +150,7 @@ Tone by context: onboarding=warm; error=plain+reassuring, no humor;
|
|
|
150
150
|
success=light warmth, no hype; billing=precise+calm; legal=formal+exact.
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
**Persist it.** Write the compiled guide under `02-DOCS/wiki/brand/voice-guide.md` and the voice-DNA block beside it, per the `harness` Karpathy-wiki convention (compiled brand articles under `02-DOCS/wiki/brand/`, raw user inputs under `02-DOCS/raw/brand/`). This is the exact study `marketing`, `landing-copy`, and `content-engine` read to ground their copy. A guide in a slide deck is invisible to them.
|
|
153
|
+
**Persist it.** Write the compiled guide under `02-DOCS/wiki/brand/voice-guide.md` and the voice-DNA block beside it, per the `harness` Karpathy-wiki convention (compiled brand articles under `02-DOCS/wiki/brand/`, raw user inputs under `02-DOCS/raw/brand/`). The persisted file is an OKF v0.1 wiki article: open it with YAML frontmatter carrying a non-empty `type:` (use `type: brand-voice`) — see the frontmatter block in [`references/voice-guide-template.md`](references/voice-guide-template.md). This is the exact study `marketing`, `landing-copy`, and `content-engine` read to ground their copy. A guide in a slide deck is invisible to them.
|
|
154
154
|
|
|
155
155
|
## Auditing for drift
|
|
156
156
|
|
|
@@ -2,6 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Fill every slot. Delete the instruction lines in italics before you ship. The finished file lives at `02-DOCS/wiki/brand/voice-guide.md`. A fully worked mini-example follows the blank template — copy its shape, not its content.
|
|
4
4
|
|
|
5
|
+
The persisted guide is an OKF v0.1 wiki article: it MUST open with YAML frontmatter carrying a non-empty `type`. Copy the block below verbatim to the top of `02-DOCS/wiki/brand/voice-guide.md`, fill the values, and set `timestamp` to the ISO 8601 datetime of the edit:
|
|
6
|
+
|
|
7
|
+
```yaml
|
|
8
|
+
---
|
|
9
|
+
type: brand-voice
|
|
10
|
+
title: <brand> — Voice & Tone Guide
|
|
11
|
+
description: How the <brand> brand sounds — traits, rules, dimensions, word bank, and AI voice-DNA.
|
|
12
|
+
tags: [brand-voice, tone-of-voice, voice-guide]
|
|
13
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
14
|
+
topic: brand
|
|
15
|
+
status: stable
|
|
16
|
+
---
|
|
17
|
+
```
|
|
18
|
+
|
|
5
19
|
---
|
|
6
20
|
|
|
7
21
|
## Blank template
|
|
@@ -454,9 +454,9 @@ agent inherits the conventions instead of re-deriving them.
|
|
|
454
454
|
|
|
455
455
|
1. **Find the article** `02-DOCS/wiki/stack/agents.md`, indexed in `02-DOCS/wiki/index.md` (the Knowledge map index; root `CLAUDE.md` points to it).
|
|
456
456
|
2. **If missing or stale**, create/update it with the project's real choices — the provider(s) and model routing, where the provider adapter lives, tool/RAG conventions, the eval gates, and the observability backend —
|
|
457
|
-
then index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer to it).
|
|
457
|
+
then index it in `02-DOCS/wiki/index.md` (the Knowledge map; root `CLAUDE.md` keeps only a short pointer to it). Write it as an OKF v0.1 wiki article per the harness [`wiki-article-template.md`](../harness/references/wiki-article-template.md): open with YAML frontmatter carrying a non-empty `type:` (use `type: stack`), and use standard markdown links — never wikilinks.
|
|
458
458
|
3. **Read it first on every use** and stay consistent; when a convention changes, update the
|
|
459
|
-
article (bump its `
|
|
459
|
+
article (bump its `timestamp`) in the same change.
|
|
460
460
|
|
|
461
461
|
No `02-DOCS/` layer? Skip silently (optionally suggest `harness`). Unlike the
|
|
462
462
|
brand study, technical conventions are *recorded, not gated* — never block the task on this.
|
|
@@ -122,10 +122,15 @@ Good: 2026-05-20 · pricing · Acme · acme.com/pricing
|
|
|
122
122
|
## The tracker artifacts
|
|
123
123
|
|
|
124
124
|
Three structured files. Required fields named here; full schema + a filled end-to-end example
|
|
125
|
-
competitor live in `references/tracker-schema.md`.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
125
|
+
competitor live in `references/tracker-schema.md`. The profile is a `.md` page under the
|
|
126
|
+
`02-DOCS/wiki/` OKF v0.1 bundle, so its YAML frontmatter carries a non-empty `type: competitor`
|
|
127
|
+
(plus the OKF-recommended `title`/`description`/`tags`/`timestamp`) alongside the domain keys;
|
|
128
|
+
its body uses standard markdown links, never wikilinks. The two CSVs are data files, not OKF
|
|
129
|
+
documents.
|
|
130
|
+
|
|
131
|
+
- **Competitor profile** (one per rival): OKF frontmatter (`type: competitor`, …) + the domain
|
|
132
|
+
keys `name`, `positioning_line`, `segment`, pricing tiers (each with `amount`, `currency`,
|
|
133
|
+
`source_url`, `date`), feature-matrix rows, watched URLs.
|
|
129
134
|
- **Feature matrix** (CSV): rows = features, columns = competitors, each cell sourced + dated.
|
|
130
135
|
- **Change log** (CSV, append-only): `date,competitor,axis,url,old_value,new_value,materiality,action`.
|
|
131
136
|
|
|
@@ -5,12 +5,28 @@ captures (the diffed HTML/JSON snapshots) go under `02-DOCS/raw/competitors/<riv
|
|
|
5
5
|
rule that overrides everything: **a price or feature cell without a `source_url` + `date` is
|
|
6
6
|
not knowledge — leave it blank and say so.**
|
|
7
7
|
|
|
8
|
+
`02-DOCS/wiki/` is an OKF v0.1 bundle, so the one `.md` file here (the competitor profile)
|
|
9
|
+
carries YAML frontmatter with a non-empty `type:`; the two CSVs are data files, not OKF
|
|
10
|
+
documents. Any cross-references in the profile body use **standard markdown links** (e.g.
|
|
11
|
+
`[Beta](./beta.md)`), never wikilinks. See `../../harness/references/wiki-protocol.md`
|
|
12
|
+
"## Conventions".
|
|
13
|
+
|
|
8
14
|
## 1. Competitor profile (one file per rival)
|
|
9
15
|
|
|
10
16
|
Markdown front-matter + body. One per rival, named `02-DOCS/wiki/competitors/<rival>.md`.
|
|
17
|
+
The frontmatter is OKF v0.1 conformant: `type:` is the only required field (non-empty);
|
|
18
|
+
`title`/`description`/`tags`/`timestamp` are the recommended standard surface. All the
|
|
19
|
+
domain keys below (`name`, `positioning_source.date`, every `pricing_tiers[].date`, …) are
|
|
20
|
+
kept verbatim — OKF allows any extra key and `verify.sh` reads them, so adding the OKF
|
|
21
|
+
fields is purely additive.
|
|
11
22
|
|
|
12
23
|
```yaml
|
|
13
24
|
---
|
|
25
|
+
type: competitor
|
|
26
|
+
title: Acme
|
|
27
|
+
description: "Tracker of record for Acme — positioning, pricing tiers, and watched surfaces."
|
|
28
|
+
tags: [competitor, pricing-watch, feature-watch]
|
|
29
|
+
timestamp: 2026-05-28T00:00:00Z
|
|
14
30
|
name: Acme
|
|
15
31
|
positioning_line: "The all-in-one workspace for remote-first teams"
|
|
16
32
|
positioning_source: { url: "https://acme.com", date: "2026-05-28" }
|
|
@@ -28,6 +44,9 @@ pricing_tiers:
|
|
|
28
44
|
|
|
29
45
|
## Notes
|
|
30
46
|
Repositioned from "project tool" to "workspace" in Q2 2026 — see change log 2026-05-12.
|
|
47
|
+
|
|
48
|
+
## Related
|
|
49
|
+
- [Beta](./beta.md) — closest competing positioning; cross-watch their pricing moves.
|
|
31
50
|
```
|
|
32
51
|
|
|
33
52
|
Every `pricing_tiers` row and any feature claim must carry `source_url` + `date`. If you only
|
|
@@ -5,6 +5,16 @@ Render this into `02-DOCS/wiki/sdd/constitution.md`. Keep it to 1-2 screens. Eve
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
```markdown
|
|
8
|
+
---
|
|
9
|
+
type: constitution
|
|
10
|
+
title: <Project> — Constitution
|
|
11
|
+
description: The non-negotiable principles every rsc-sdd phase obeys.
|
|
12
|
+
tags: [sdd, constitution]
|
|
13
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
14
|
+
topic: sdd
|
|
15
|
+
version: v1.0.0
|
|
16
|
+
---
|
|
17
|
+
|
|
8
18
|
# <Project> — Constitution
|
|
9
19
|
|
|
10
20
|
> Version: v1.0.0 · Ratified: YYYY-MM-DD · Last amended: YYYY-MM-DD
|
|
@@ -79,7 +79,7 @@ date,pillar,cluster,format,owner,stage,brief_link,atomization,mix
|
|
|
79
79
|
|
|
80
80
|
## The brief
|
|
81
81
|
|
|
82
|
-
A slot **cannot leave the `idea` stage without a brief.** One canonical brief format means consistent output regardless of who writes it. Required fields (inline minimum):
|
|
82
|
+
A slot **cannot leave the `idea` stage without a brief.** One canonical brief format means consistent output regardless of who writes it. The brief is a `.md` page in the `02-DOCS/wiki/` OKF v0.1 bundle: its YAML frontmatter carries a non-empty `type: content-brief` (plus the OKF-recommended `title`/`description`/`tags`/`timestamp`) alongside the domain fields below, and any body cross-references use standard markdown links, never wikilinks. Required fields (inline minimum):
|
|
83
83
|
|
|
84
84
|
- **objective** — the one outcome this piece drives.
|
|
85
85
|
- **persona** — which of the 2–4 you target.
|
|
@@ -8,6 +8,13 @@ template, the stage gates, and the CSV column docs you fill in.
|
|
|
8
8
|
Every slot carries one brief in the same shape. A slot cannot leave the `idea` stage
|
|
9
9
|
without it. Store briefs under `02-DOCS/wiki/content/briefs/<slug>.md`.
|
|
10
10
|
|
|
11
|
+
These briefs live in the `02-DOCS/wiki/` OKF v0.1 bundle, so each brief `.md` carries YAML
|
|
12
|
+
frontmatter with a non-empty `type: content-brief` (the OKF-recommended `title`/`description`/
|
|
13
|
+
`tags`/`timestamp` are added where meaningful). The domain brief fields below are kept as-is —
|
|
14
|
+
OKF allows any extra key. Cross-references in the body use **standard markdown links**, never
|
|
15
|
+
wikilinks (e.g. `[brand voice](../brand-voice.md)`). See
|
|
16
|
+
`../../harness/references/wiki-protocol.md` "## Conventions".
|
|
17
|
+
|
|
11
18
|
| Field | Required | What goes here |
|
|
12
19
|
|---|---|---|
|
|
13
20
|
| `objective` | yes | the one outcome (e.g. "drive activation-checklist signups") |
|
|
@@ -25,6 +32,13 @@ without it. Store briefs under `02-DOCS/wiki/content/briefs/<slug>.md`.
|
|
|
25
32
|
|
|
26
33
|
```markdown
|
|
27
34
|
---
|
|
35
|
+
# OKF v0.1 standard surface — `type` is the only REQUIRED field (non-empty).
|
|
36
|
+
type: content-brief
|
|
37
|
+
title: "Onboarding activation guide — brief"
|
|
38
|
+
description: "Brief of record for the flagship activation-checklist guide."
|
|
39
|
+
tags: [content-brief, onboarding, flagship]
|
|
40
|
+
timestamp: 2026-07-01T00:00:00Z
|
|
41
|
+
# Domain brief fields (OKF allows any extra key; the pipeline + verify read these).
|
|
28
42
|
slug: onboarding-activation-guide
|
|
29
43
|
objective: drive activation-checklist signups from new-trial users
|
|
30
44
|
persona: hands-on-ops-lead
|
|
@@ -36,7 +50,7 @@ owner: ana
|
|
|
36
50
|
target_keyword: "saas user activation checklist"
|
|
37
51
|
success_metric: 100 checklist downloads in 30 days
|
|
38
52
|
atomization_intent: 10 derivatives — 3 LinkedIn, 1 X thread, 2 shorts, 1 newsletter, 3 carousels
|
|
39
|
-
voice_ref:
|
|
53
|
+
voice_ref: ../brand-voice.md
|
|
40
54
|
---
|
|
41
55
|
```
|
|
42
56
|
|
|
@@ -46,6 +46,29 @@ Reuse the learner profile if it exists rather than re-interviewing. When you wri
|
|
|
46
46
|
matrix, persist them there so `course-storytelling` can pick up the same grounding for the hand-off.
|
|
47
47
|
Note in the file that the profile is shared, so neither skill clobbers the other's section.
|
|
48
48
|
|
|
49
|
+
Each persisted `02-DOCS/wiki/teaching/*.md` file is an OKF v0.1 wiki article: open it with YAML
|
|
50
|
+
frontmatter carrying a non-empty `type:` (`type: course-outline`), then the H1 and body. Use standard
|
|
51
|
+
markdown links between articles (`[Outcomes](./<course>-outcomes.md)`), never wikilinks. Mirror the
|
|
52
|
+
harness `wiki-article-template.md` shape:
|
|
53
|
+
|
|
54
|
+
```markdown
|
|
55
|
+
---
|
|
56
|
+
type: course-outline
|
|
57
|
+
title: <Course> — Outcomes
|
|
58
|
+
description: The measurable, ABCD-complete learning outcomes for <course>.
|
|
59
|
+
tags: [course, learning-outcomes]
|
|
60
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
61
|
+
topic: teaching
|
|
62
|
+
status: stable
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
# <Course> — Outcomes
|
|
66
|
+
|
|
67
|
+
> Sources: {user interview, YYYY-MM-DD}
|
|
68
|
+
|
|
69
|
+
...
|
|
70
|
+
```
|
|
71
|
+
|
|
49
72
|
## Right-sizing scope by format
|
|
50
73
|
|
|
51
74
|
The single most common failure is too many outcomes for the time. Honest ceilings:
|
|
@@ -81,9 +81,19 @@ If the user can't answer a question, that dimension stays incomplete — note th
|
|
|
81
81
|
|
|
82
82
|
### Profile wiki article template
|
|
83
83
|
|
|
84
|
-
Each `02-DOCS/wiki/teaching/*.md` article follows the harness wiki format:
|
|
84
|
+
Each `02-DOCS/wiki/teaching/*.md` article follows the harness wiki format. It is an OKF v0.1 article: open it with YAML frontmatter carrying a non-empty `type:` (`teaching-profile`), then the H1 and body:
|
|
85
85
|
|
|
86
86
|
```markdown
|
|
87
|
+
---
|
|
88
|
+
type: teaching-profile
|
|
89
|
+
title: Teaching — Learner
|
|
90
|
+
description: Who is learning, their level and prior knowledge, their pains and desires, and what they can DO after.
|
|
91
|
+
tags: [teaching, learner, profile]
|
|
92
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
93
|
+
topic: teaching
|
|
94
|
+
status: stable
|
|
95
|
+
---
|
|
96
|
+
|
|
87
97
|
# Teaching — Learner
|
|
88
98
|
|
|
89
99
|
> Sources: {user interview, YYYY-MM-DD}
|
|
@@ -116,9 +126,19 @@ After this, the learner can: …
|
|
|
116
126
|
|
|
117
127
|
### False-beliefs article specifics
|
|
118
128
|
|
|
119
|
-
`false-beliefs.md` must type every belief so `brunson-frameworks.md` can match it to a breaking story:
|
|
129
|
+
`false-beliefs.md` must type every belief so `brunson-frameworks.md` can match it to a breaking story (same OKF frontmatter; `type: teaching-profile`):
|
|
120
130
|
|
|
121
131
|
```markdown
|
|
132
|
+
---
|
|
133
|
+
type: teaching-profile
|
|
134
|
+
title: Teaching — False Beliefs
|
|
135
|
+
description: The learner's blocking beliefs, typed vehicle / internal / external, each with a breaking story.
|
|
136
|
+
tags: [teaching, false-beliefs, profile]
|
|
137
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
138
|
+
topic: teaching
|
|
139
|
+
status: stable
|
|
140
|
+
---
|
|
141
|
+
|
|
122
142
|
# Teaching — False Beliefs
|
|
123
143
|
|
|
124
144
|
> Sources: {user interview, YYYY-MM-DD}
|
|
@@ -56,9 +56,22 @@ Map every ADR to the **MADR 4.0.0 template** (released 2024-09-17 — the curren
|
|
|
56
56
|
|
|
57
57
|
Required spine, in order: **Title → Status → Date → Context and Problem Statement → Decision Drivers → Considered Options → Decision Outcome → Consequences**. The MADR-optional sections (Confirmation, Pros and Cons of the Options, More Information) you add only when they pull weight.
|
|
58
58
|
|
|
59
|
-
Minimal skeleton — this is enough for most decisions
|
|
59
|
+
Minimal skeleton — this is enough for most decisions. When the ADR lives in a harness
|
|
60
|
+
workspace (`02-DOCS/wiki/decisions/`), it is part of an OKF v0.1 bundle, so it opens with YAML
|
|
61
|
+
frontmatter carrying a non-empty `type: decision` (plus the OKF-recommended `title`/`tags`/
|
|
62
|
+
`timestamp`). The body keeps the human-readable `- Status:`/`- Date:` lines verbatim — they are
|
|
63
|
+
the decision's domain record and `scripts/verify.sh` reads them, so the frontmatter is purely
|
|
64
|
+
additive. Cross-references use standard markdown links, never wikilinks. (In a plain code repo
|
|
65
|
+
under `docs/adr/`, the frontmatter is optional — OKF conformance only governs the wiki bundle.)
|
|
60
66
|
|
|
61
67
|
```markdown
|
|
68
|
+
---
|
|
69
|
+
type: decision
|
|
70
|
+
title: "Choose Postgres over DynamoDB for the primary store"
|
|
71
|
+
tags: [adr, database, billing]
|
|
72
|
+
timestamp: 2026-06-02T00:00:00Z
|
|
73
|
+
---
|
|
74
|
+
|
|
62
75
|
# 7. Choose Postgres over DynamoDB for the primary store
|
|
63
76
|
|
|
64
77
|
- Status: accepted
|
|
@@ -8,6 +8,17 @@ Filenames: `NNNN-title-with-dashes.md` where `NNNN` is a zero-padded sequential
|
|
|
8
8
|
|
|
9
9
|
Store under one log only — `docs/adr/` (code repo) or `02-DOCS/wiki/decisions/` (harness workspace). Maintain an index as `docs/adr/README.md` or `0000-index.md`:
|
|
10
10
|
|
|
11
|
+
When the log lives in `02-DOCS/wiki/decisions/`, each ADR is a document in an OKF v0.1 bundle, so it opens with YAML frontmatter carrying a non-empty `type: decision` (plus the OKF-recommended `title`/`tags`/`timestamp`). The MADR body — `- Status:`, `- Date:`, the sections — is kept exactly as below; the frontmatter is additive and `verify.sh` keeps reading the body lines. The index file (`0000-index.md` / `README.md`) is the OKF reserved directory listing and carries **no frontmatter**. All cross-references are standard markdown links, never wikilinks. In a plain `docs/adr/` code repo the frontmatter is optional — OKF conformance governs only the wiki bundle. The OKF frontmatter block to prepend (shown once; the templates below omit it for brevity):
|
|
12
|
+
|
|
13
|
+
```yaml
|
|
14
|
+
---
|
|
15
|
+
type: decision
|
|
16
|
+
title: "<short decision title>"
|
|
17
|
+
tags: [adr]
|
|
18
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
19
|
+
---
|
|
20
|
+
```
|
|
21
|
+
|
|
11
22
|
```markdown
|
|
12
23
|
# Decision Log
|
|
13
24
|
|
|
@@ -116,7 +127,16 @@ a test, an architecture-fitness check.>
|
|
|
116
127
|
|
|
117
128
|
## Worked example — `0007-choose-postgres.md`
|
|
118
129
|
|
|
130
|
+
Shown with the OKF frontmatter it carries when stored in `02-DOCS/wiki/decisions/`:
|
|
131
|
+
|
|
119
132
|
```markdown
|
|
133
|
+
---
|
|
134
|
+
type: decision
|
|
135
|
+
title: "Choose Postgres over DynamoDB for the primary store"
|
|
136
|
+
tags: [adr, database, billing]
|
|
137
|
+
timestamp: 2026-06-02T00:00:00Z
|
|
138
|
+
---
|
|
139
|
+
|
|
120
140
|
# 7. Choose Postgres over DynamoDB for the primary store
|
|
121
141
|
|
|
122
142
|
- Status: accepted
|
|
@@ -102,9 +102,19 @@ If the user can't answer a question, that dimension stays incomplete — note th
|
|
|
102
102
|
|
|
103
103
|
### Visual-identity wiki article template
|
|
104
104
|
|
|
105
|
-
Each `02-DOCS/wiki/brand/*.md` article follows the harness wiki format:
|
|
105
|
+
Each `02-DOCS/wiki/brand/*.md` article follows the harness wiki format. It is an OKF v0.1 article: open it with YAML frontmatter carrying a non-empty `type:` (`brand-study`), then the H1 and body:
|
|
106
106
|
|
|
107
107
|
```markdown
|
|
108
|
+
---
|
|
109
|
+
type: brand-study
|
|
110
|
+
title: Brand — Visual Identity
|
|
111
|
+
description: The visual personality — OKLCH color system, type pairing & scale, and radius/shadow/motion personality.
|
|
112
|
+
tags: [brand, visual-identity, design]
|
|
113
|
+
timestamp: YYYY-MM-DDTHH:MM:SSZ
|
|
114
|
+
topic: brand
|
|
115
|
+
status: stable
|
|
116
|
+
---
|
|
117
|
+
|
|
108
118
|
# Brand — Visual Identity
|
|
109
119
|
|
|
110
120
|
> Sources: {user interview, YYYY-MM-DD}
|
package/skills/harness/SKILL.md
CHANGED
|
@@ -11,7 +11,7 @@ profiles: [minimal, core, full]
|
|
|
11
11
|
The **harness** is the control plane of a workspace. A workspace need not be code: it can be a company, an ops desk, a legal archive, a personal knowledge vault. Whatever it is, the harness is the durable apparatus that keeps it operable and legible, made of three parts:
|
|
12
12
|
|
|
13
13
|
- **`01-TOOLS/<PROVIDER>/`** — the operational tooling layer. One folder per external provider, co-locating credentials (`.env`) with the scripts that consume them. Each tool ships a working `test_connection` against the real API.
|
|
14
|
-
- **`02-DOCS/`** — the **Karpathy chaos→knowledge engine**: a domain-agnostic LLM wiki (`inbox/` + `raw/` + `raw/worklog/` + `wiki/` + `wiki/index.md` + `wiki/log.md` + `wiki/gaps.md` + `wiki/scores.json` + the `.base` views), fully embedded in this skill. It feeds from **two on-ramps**: (1) the user drops **any raw file in any format** (PDF, image, CSV, JSON, txt, html…) into `inbox/`, and an **Auto-Ingest Sweep** ("the agent goes for a walk") extracts, classifies, cross-links, and compiles it — and goes further, **discovering un-ingested documents anywhere in the workspace** (a stray `/transcripts`, `/facturas`…), bounded by `.rscignore` and de-duplicated by the `wiki/.ingested.json` ledger, fired automatically at SessionStart (when the inbox has material) and by the daily cron. Ingest is
|
|
14
|
+
- **`02-DOCS/`** — the **Karpathy chaos→knowledge engine**: a domain-agnostic LLM wiki (`inbox/` + `raw/` + `raw/worklog/` + `wiki/` + `wiki/index.md` + `wiki/log.md` + `wiki/gaps.md` + `wiki/scores.json` + the `.base` views), fully embedded in this skill. It feeds from **two on-ramps**: (1) the user drops **any raw file in any format** (PDF, image, CSV, JSON, txt, html…) into `inbox/`, and an **Auto-Ingest Sweep** ("the agent goes for a walk") extracts, classifies, cross-links, and compiles it — and goes further, **discovering un-ingested documents anywhere in the workspace** (a stray `/transcripts`, `/facturas`…), bounded by `.rscignore` and de-duplicated by the `wiki/.ingested.json` ledger, fired automatically at SessionStart (when the inbox has material) and by the daily cron. Ingest keeps the repo clean: a loose file it ingests at the workspace root (or anything in `inbox/`) is **moved into `raw/`** (relocated, never deleted — a dropped PDF ends up in `raw/`, not at the root), while files inside a user-maintained folder are copied and consolidation is proposed; removing a redundant folder needs explicit consent; (2) a **Worklog Sweep** captures **what we do** — every meaningful session of work is itself a `raw` source (`raw/worklog/`) compiled into the wiki, fired by a `PreCompact`/`SessionEnd` hook, by an explicit milestone (a commit), or by the daily curation automation (`references/daily-curation-automation.md`). The `wiki/` is a **100%-OKF-v0.1 bundle** (Google's [Open Knowledge Format](https://github.com/GoogleCloudPlatform/knowledge-catalog/tree/main/okf)) AND an **Obsidian-native** vault at the same time — standard markdown links, OKF-standard YAML frontmatter (Properties), readable filenames, and `.base` views give a real graph + live tables — structure, **not vector DB / embeddings / RAG**. The agent writes it; the human reads it in Obsidian. See `references/wiki-protocol.md` for the protocol, `references/ingest-formats.md` for the multiformat Fetch, `references/wiki-worklog-template.md` for the work capture, and `references/obsidian-scaffolding.md` for the vault scaffolding. Topics are inferred from content (`finanzas/`, `legal/`, `crm/`…), never hardcoded. The wiki **self-improves continuously**: every Ingest, Sweep and Query triggers a Maintenance Pass (deterministic lint, score recomputation, gap detection, Related/See-Also sweep), and every N interactions a Micro-Improve runs. Deep Improve runs on explicit request or via the scheduled daily curation. No external skill needed.
|
|
15
15
|
- **The Knowledge map** — the `## Knowledge map` section of the root `CLAUDE.md` that indexes the wiki (including the `harness/` topic) and is read by every other skill before it works in its area.
|
|
16
16
|
|
|
17
17
|
`harness` is the **protagonist concept**. `init` is the bootstrap front door — it gauges the user, drafts the profile, and hands off the first scaffold. THIS skill (`harness`) is the **ongoing control**: it audits, migrates, scaffolds, sweeps the inbox, and keeps the wiki, the tooling and the Knowledge map honest over the life of the workspace. It also generates root `CLAUDE.md` and `AGENTS.md`, and migrates legacy `XX-*` numbered folders into the canonical layout.
|
|
@@ -105,7 +105,7 @@ harness/
|
|
|
105
105
|
│ ├── inbox-readme-template.md ← the inbox/README.md drop-zone contract
|
|
106
106
|
│ ├── wiki-raw-template.md ← format for raw/<topic>/*.md
|
|
107
107
|
│ ├── wiki-worklog-template.md ← format for raw/worklog/*.md (work-driven capture)
|
|
108
|
-
│ ├── wiki-article-template.md ← format for wiki/<topic>/*.md (
|
|
108
|
+
│ ├── wiki-article-template.md ← format for wiki/<topic>/*.md (OKF frontmatter + markdown links)
|
|
109
109
|
│ ├── wiki-index-template.md ← format for wiki/index.md (machine catalog; .base = human nav)
|
|
110
110
|
│ ├── obsidian-scaffolding.md ← .base views, .gitignore, attachments, .obsidian config
|
|
111
111
|
│ ├── daily-curation-automation.md ← portable scheduled compounding pass (the third trigger)
|
|
@@ -356,7 +356,7 @@ If any of these occur, stop and report:
|
|
|
356
356
|
- `references/inbox-readme-template.md` — the `inbox/README.md` drop-zone contract shown to the user.
|
|
357
357
|
- `references/wiki-raw-template.md` — format for `02-DOCS/raw/<topic>/*.md`.
|
|
358
358
|
- `references/wiki-worklog-template.md` — format for `02-DOCS/raw/worklog/*.md` (the work-driven capture; the session as a raw source).
|
|
359
|
-
- `references/wiki-article-template.md` — format for `02-DOCS/wiki/<topic>/*.md` (
|
|
359
|
+
- `references/wiki-article-template.md` — format for `02-DOCS/wiki/<topic>/*.md` (OKF v0.1 frontmatter + relative markdown links + `## Related`).
|
|
360
360
|
- `references/wiki-index-template.md` — format for `02-DOCS/wiki/index.md` (machine catalog; the `.base` views are the human navigation).
|
|
361
361
|
- `references/obsidian-scaffolding.md` — the vault scaffolding: `.base` views, `.gitignore`, `attachments/`, `.obsidian` config (no vector DB / RAG).
|
|
362
362
|
- `references/daily-curation-automation.md` — portable scheduled compounding pass; on Claude Code wired via the `schedule` skill.
|
|
@@ -39,12 +39,14 @@ Run the daily curation pass for this 02-DOCS second brain.
|
|
|
39
39
|
|
|
40
40
|
Use the harness wiki-protocol.md as the contract. First run the Auto-Ingest Sweep:
|
|
41
41
|
process inbox/, then scan the workspace (minus .rscignore) for un-ingested documents,
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
applying Clean-as-you-go (move loose root-level + inbox files into raw/ after a
|
|
43
|
+
verified ingest; copy files nested in user-maintained folders and propose
|
|
44
|
+
consolidation), record them in wiki/.ingested.json, and list ambiguous folders as
|
|
45
|
+
proposals (do not grab them). Then compile pending raw/worklog/ material into wiki/
|
|
46
|
+
pages (update existing before creating new), keep frontmatter + relative markdown
|
|
47
|
+
links OKF-consistent, append significant decisions to wiki/harness/decisions.md,
|
|
48
|
+
refresh the .base-backed navigation, recompute scores.json + the score: property,
|
|
49
|
+
and prepend a dated entry (newest first) to wiki/log.md.
|
|
48
50
|
|
|
49
51
|
Be conservative. If the topic map no longer fits, record a recommendation in
|
|
50
52
|
wiki/gaps.md or a page's Open Questions instead of moving large parts of the
|
|
@@ -31,17 +31,24 @@ not bundled with a specific raw source. Link them from the page that depends on
|
|
|
31
31
|
them. Source-bundled originals stay in `raw/<topic>/_originals/`.
|
|
32
32
|
```
|
|
33
33
|
|
|
34
|
-
## `02-DOCS/.obsidian/app.json` (attachment folder)
|
|
34
|
+
## `02-DOCS/.obsidian/app.json` (attachment folder + OKF link mode)
|
|
35
35
|
|
|
36
36
|
```json
|
|
37
37
|
{
|
|
38
38
|
"attachmentFolderPath": "attachments",
|
|
39
|
-
"newLinkFormat": "
|
|
40
|
-
"useMarkdownLinks":
|
|
39
|
+
"newLinkFormat": "relative",
|
|
40
|
+
"useMarkdownLinks": true,
|
|
41
|
+
"alwaysUpdateLinks": true
|
|
41
42
|
}
|
|
42
43
|
```
|
|
43
44
|
|
|
44
|
-
`useMarkdownLinks:
|
|
45
|
+
`useMarkdownLinks: true` makes new internal links **standard markdown links**, not
|
|
46
|
+
wikilinks — this is what keeps `wiki/` a 100%-OKF-conformant bundle (OKF consumers
|
|
47
|
+
follow markdown links; wikilinks `[[...]]` are non-conformant). `newLinkFormat:
|
|
48
|
+
relative` writes paths relative to the current file (`../topic/page.md`), which OKF
|
|
49
|
+
supports and which resolves both in Obsidian and in any OKF consumer.
|
|
50
|
+
`alwaysUpdateLinks: true` makes Obsidian rewrite those relative links automatically
|
|
51
|
+
on rename, so links survive moves the way wikilinks used to. `userIgnoreFilters`
|
|
45
52
|
(Settings → Files & Links → Excluded files) should hide noise from search/graph:
|
|
46
53
|
`raw/_originals/`, `inbox/_processed/`, `audits/`.
|
|
47
54
|
|
|
@@ -59,7 +66,7 @@ filters:
|
|
|
59
66
|
views:
|
|
60
67
|
- type: table
|
|
61
68
|
name: All Articles
|
|
62
|
-
order: [file.name, topic, status, score,
|
|
69
|
+
order: [file.name, topic, status, score, timestamp]
|
|
63
70
|
sort:
|
|
64
71
|
- property: score
|
|
65
72
|
direction: DESC
|
|
@@ -74,9 +81,9 @@ filters:
|
|
|
74
81
|
views:
|
|
75
82
|
- type: table
|
|
76
83
|
name: Worklog
|
|
77
|
-
order: [file.name, topic,
|
|
84
|
+
order: [file.name, topic, timestamp, status]
|
|
78
85
|
sort:
|
|
79
|
-
- property:
|
|
86
|
+
- property: timestamp
|
|
80
87
|
direction: DESC
|
|
81
88
|
```
|
|
82
89
|
|
|
@@ -89,8 +96,8 @@ filters:
|
|
|
89
96
|
views:
|
|
90
97
|
- type: table
|
|
91
98
|
name: Decisions
|
|
92
|
-
order: [file.name, topic, status,
|
|
99
|
+
order: [file.name, topic, status, timestamp]
|
|
93
100
|
sort:
|
|
94
|
-
- property:
|
|
101
|
+
- property: timestamp
|
|
95
102
|
direction: DESC
|
|
96
103
|
```
|
|
@@ -1,19 +1,23 @@
|
|
|
1
1
|
---
|
|
2
|
+
# OKF v0.1 standard surface — `type` is the only REQUIRED field (non-empty).
|
|
3
|
+
type: article
|
|
2
4
|
title: {Title}
|
|
3
|
-
|
|
5
|
+
description: {One-sentence summary, for previews + search.}
|
|
6
|
+
resource: {URL or path to the underlying source/asset — omit the line if none}
|
|
4
7
|
tags: []
|
|
5
|
-
|
|
8
|
+
timestamp: {YYYY-MM-DDTHH:MM:SSZ}
|
|
9
|
+
# rsc custom fields (OKF allows any; conformant consumers preserve unknown keys)
|
|
10
|
+
aliases: [{old-slug}]
|
|
6
11
|
topic: {topic}
|
|
7
12
|
status: draft
|
|
8
13
|
sources: []
|
|
9
|
-
updated: {YYYY-MM-DD}
|
|
10
14
|
score: 0.0
|
|
11
15
|
---
|
|
12
16
|
|
|
13
17
|
# {Title}
|
|
14
18
|
|
|
15
19
|
> Sources: {Author1, YYYY-MM-DD; Author2, YYYY-MM-DD}
|
|
16
|
-
> Raw: [
|
|
20
|
+
> Raw: [{raw-source-1}](../../raw/{topic}/{raw-source-1}.md); [{raw-source-2}](../../raw/{topic}/{raw-source-2}.md)
|
|
17
21
|
|
|
18
22
|
## Overview
|
|
19
23
|
|
|
@@ -25,19 +29,32 @@ score: 0.0
|
|
|
25
29
|
|
|
26
30
|
## Related
|
|
27
31
|
|
|
28
|
-
{OPTIONAL — include only when cross-references exist. Maintained during lint. Use
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
{OPTIONAL — include only when cross-references exist. Maintained during lint. Use
|
|
33
|
+
standard markdown links (OKF-conformant — they ARE the knowledge graph; an OKF
|
|
34
|
+
consumer follows them, and the Obsidian graph + backlinks render them too):
|
|
35
|
+
- Same topic: `- [Other Article](./other-article.md) — why it connects.`
|
|
36
|
+
- Different topic: `- [Other Article](../other-topic/other-article.md) — why it connects.`
|
|
37
|
+
- With display text: `- [how we say it here](../other-topic/other-article.md) — why it connects.`}
|
|
31
38
|
|
|
32
39
|
<!--
|
|
33
|
-
FRONTMATTER CONTRACT
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
|
|
40
|
+
FRONTMATTER CONTRACT — OKF v0.1 conformant. Powers OKF consumers AND Obsidian
|
|
41
|
+
Properties + Bases + graph (same file, no translation).
|
|
42
|
+
OKF standard surface:
|
|
43
|
+
- type REQUIRED, non-empty. article | decision | worklog | brief | spec | profile.
|
|
44
|
+
(OKF type values are not registered centrally; consumers tolerate unknown ones.)
|
|
45
|
+
- title human-readable; the H1 matches it. Consumers may derive from filename if absent.
|
|
46
|
+
- description single-sentence summary for previews/search.
|
|
47
|
+
- resource URI/path to the underlying asset this concept documents (omit if none).
|
|
48
|
+
- tags cross-cutting qualities ONLY — never the main category (that is `topic`).
|
|
49
|
+
- timestamp ISO 8601 datetime of the last meaningful edit (e.g. 2026-06-28T14:30:00Z).
|
|
50
|
+
rsc custom fields (allowed by OKF; never required for conformance):
|
|
51
|
+
- aliases keep the old kebab slug here so pre-migration links still resolve.
|
|
38
52
|
- topic the wiki/<topic>/ folder, one level. Inferred from content, never hardcoded.
|
|
39
53
|
- status draft | stable | stale (lifecycle; filterable in a Base).
|
|
40
|
-
- sources
|
|
41
|
-
- updated YYYY-MM-DD of the last meaningful edit.
|
|
54
|
+
- sources markdown links to raw/ pages this was distilled from (cite your evidence).
|
|
42
55
|
- score mirror of scores.json, written by the Maintenance Pass (single writer → no drift).
|
|
56
|
+
|
|
57
|
+
LINKS: standard markdown links only — NEVER wikilinks ([[...]]). Relative paths
|
|
58
|
+
(./same-topic.md, ../other-topic/page.md, ../../raw/<topic>/<file>.md). This is
|
|
59
|
+
what keeps wiki/ a portable, 100%-OKF-conformant bundle.
|
|
43
60
|
-->
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# Knowledge Base Index
|
|
2
2
|
|
|
3
|
+
> **OKF v0.1 reserved file** — `index.md` carries **no frontmatter** (it is a
|
|
4
|
+
> directory listing for progressive disclosure, per the OKF spec). Links are
|
|
5
|
+
> standard markdown, relative to this file (`topic/article.md`), NEVER wikilinks.
|
|
6
|
+
>
|
|
3
7
|
> **Human navigation lives in the `.base` views** (`Articles.base`, `Worklog.base`,
|
|
4
8
|
> `Decisions.base`) — live tables over frontmatter, sorted by score/status/date.
|
|
5
9
|
> This index is the **machine-readable catalog + fallback** the agent maintains;
|
|
@@ -11,8 +15,8 @@
|
|
|
11
15
|
|
|
12
16
|
| Article | Summary | Updated | Score |
|
|
13
17
|
|---------|---------|---------|-------|
|
|
14
|
-
| [
|
|
15
|
-
| [
|
|
18
|
+
| [{Article Title}]({topic-name}/{article-file}.md) | {One-line summary} | {YYYY-MM-DD} | {N.N} |
|
|
19
|
+
| [{Archived Article}]({topic-name}/{archived-file}.html) | [Archived] {One-line summary} | {YYYY-MM-DD} | {N.N} |
|
|
16
20
|
|
|
17
21
|
## {another-topic}
|
|
18
22
|
|
|
@@ -20,7 +24,7 @@
|
|
|
20
24
|
|
|
21
25
|
| Article | Summary | Updated | Score |
|
|
22
26
|
|---------|---------|---------|-------|
|
|
23
|
-
| [
|
|
27
|
+
| [{Article Title}]({another-topic}/{article-file}.md) | {One-line summary} | {YYYY-MM-DD} | {N.N} |
|
|
24
28
|
|
|
25
29
|
> **Score**: composite quality score (inbound links, source count, cited count,
|
|
26
30
|
> freshness; minus conflicts and orphan penalty). Regenerated on every
|