Decision log (VERSION 1.6.0, kb_schema_version 1.4): - wiki/decisions/ scaffold — numbered NNNN-slug.md records, own index (with status vocabulary) and log - type: decision adds status/decided_on/decided_by/affects/review_on; supersedes/superseded_by carry history and must be set on both sides - New ckb-decide skill: records decisions and answers what/why/who/when, what superseded what, and what is still open. Decision pages are append-only — a changed mind is a new superseding decision - Graph gains decided_by and affects edge types - ckb-ingest routes decisions found in raw material to this format; ckb-retrieve gains the decisions index as a cascade step Scriptified the mechanical skills: - ckb-export-okf/scripts/export_okf.py does the whole OKF transform (frontmatter remap, link rewriting, index/log regeneration, conformance validation); --check validates without writing - ckb-lint/scripts/lint_report.py does the read-only detection half (conformance, freshness, confidence, retention, decisions, orphans, graph, index/log, source.yaml); judgment calls stay with the model Also: removed the duplicate personal quiz skill, fixed stale cbk-quiz doc paths, gitignored __pycache__. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
7.7 KiB
7.7 KiB
2026-09-01 20:25 CEST
- Ran
ckb-sync-changes: committed a localworkload/2026-07-29_summary.mdedit, merged 4 commits fromorigin/main(one conflict in that file, resolved by keeping the remote superset), pushed;origin/mainnow at8174a54. - Updated
.agents/skills/ckb-init/SKILL.mdso init can pull the template repo into a scratch folder instead of only copying from the local working tree:- New Step 3 "Resolve the template source" (shallow clone of the canonical repo or a user-supplied fork/mirror URL vs. the local working tree), with scratch-path guidance and an explicit rule against cloning into the target itself.
- New Step 11 "Initialize the new KB's own git history (ask first)"; report step now names the template source and git-init outcome.
- Fixed drift while there: skill list (
ckb-quiztypo, addedckb-retrieve/ckb-index-external),kb_schema_versionno longer hard-coded to 1.1,wiki/projects/andwiki/query-gaps.mdadded to the scaffold,.gitignoresnapshot refreshed with the connectorlibs/rules. - Added clone-related edge cases (clone failure with no local fallback, clone-in-place request, target already a git repo, stale scratch dir).
- Propagated the change to
AGENTS.mdskill routing table andMANUAL.md/MANUAL.pl.md(prose + "say this" tables). - Bumped root
VERSION1.3.0 → 1.4.0 (template/tooling layer);wiki/index.mdkb_schema_versionstays 1.3 — no wiki content contract change.
2026-09-01 20:35 CEST
- User asked for a review of the skill set with a proposed model per skill.
- Reviewed all 13
.agents/skills/ckb-*skills (plus the 7 personal skills under~/.claude/skills/) and classified each by reasoning load vs. mechanical load. - Proposal: Opus 5 for
ckb-ingest,ckb-retrieve,ckb-upgrade,ckb-project-summary,ckb-teach-me; Sonnet 5 forckb-index-external,ckb-lint,ckb-init,ckb-sync-changes,ckb-export-okf,ckb-onboard-me,ckb-quiz; Haiku 4.5 forckb-export-starlight(script-driven). - Noted that SKILL.md frontmatter carries only
name/descriptionhere and Claude Code skills have nomodelfield — model choice is per-session (/model) or per-subagent, so applying the proposal means either switching model before invoking or wrapping a skill in a subagent definition withmodel:frontmatter. - Also flagged:
ckb-export-okfdoes its page transform by hand whileckb-export-starlightdelegates to a Python script — the OKF one is the obvious candidate to scriptify (and would then drop to Haiku). - No files changed by this review.
2026-09-01 20:45 CEST
- User asked to remove the duplicate personal
quizskill and to scriptify the skills whose work is mechanical. - Deleted
~/.claude/skills/quiz/(byte-identical tockb-quizapart from thename:field and the license footer); a copy was kept in the session scratchpad only. - Scriptified
ckb-export-okf: added.agents/skills/ckb-export-okf/scripts/export_okf.py(stdlib-only, read-only outside its output dir) doing the whole transform — frontmatter remap, wikilink stripping,/wiki/link rewriting, index and log regeneration from the tree, plus an OKF conformance pass over its own output.--checkvalidates into a temp dir without writing. Verified byte-identical across two runs. - Rewrote
ckb-export-okf/SKILL.mdaround the script (run it, relay the report, distinguishSOURCE ISSUE:= fix the wiki fromNONCONFORMANT:= fix the script), keeping the mapping table as reference documentation. - Scriptified the detection half of
ckb-lint: added.agents/skills/ckb-lint/scripts/lint_report.py— strictly read-only, covering checks 1/2/3/4/6/7/8/10 acrosswiki/and every connector-backedlibs/<name>/(reporting each one'saccess:level). Supersession (5), error-book (9), and every auto-fix-vs-report decision deliberately stay with the model. Added Step 0 tockb-lint/SKILL.mdand rewrote the mechanical checks to describe what the findings mean rather than how to detect them. - Tested the checker against a synthetic tree covering unparseable frontmatter, missing
type, stale/low-confidence/archive-candidate pages, orphans, dangling graph edges, missing index entries, a change double-logged in root and subdirectory logs, and an invalidsource.yaml. Against the real wiki it finds one genuine issue:wiki/query-gaps.mdis 4 days past its 30-day freshness window. - Propagated to
README.md/README.pl.md(OKF section now describes the script),MANUAL.md/MANUAL.pl.md(Lint section notes the read-only checker), andckb-init(skill-set copy now names all three support scripts). - Bumped root
VERSION1.4.0 → 1.5.0 (template/tooling layer); wikikb_schema_versionstays 1.3 — no content contract change. - Decided against scriptifying anything else:
ckb-init/ckb-upgradeare interactive and decision-heavy, and the rest (ingest,retrieve,project-summary,teach-me,onboard-me,quiz) are judgment work with no fixed ruleset to encode.
2026-09-01 21:10 CEST
- User asked for a decision-log feature: record decisions with who/when/supersession and query them back.
- Designed decisions as their own page kind rather than entity pages, because a decision is a point-in-time record with a lifecycle, not a description that gets rewritten as understanding improves. Core rule: decision pages are append-only — a changed mind is a new decision superseding the old one, with the old page's context and rationale left intact.
- Wiki layer: created
wiki/decisions/withindex.md(status vocabulary: proposed / accepted / rejected / superseded / reversed) and its ownlog.md. Pages areNNNN-slug.md, numbered from 0001, numbers never reused. - Schema:
type: decisionaddsstatus,decided_on,decided_by, and optionalaffects/review_on; the existingsupersedes/superseded_bypair carries decision history (must be set on both sides). Bumpedkb_schema_version1.3 → 1.4 (additive) and rootVERSION1.5.0 → 1.6.0. - New skill
ckb-decideowns both halves: recording (collect facts, ask for gaps in one round rather than an interview, check for a decision it supersedes, allocate the number, write page, update index + graph edges + logs) and lookup (index first, read superseded chains as history, answer with who/when/status attached, never reconstruct an unrecorded decision). ckb-lintnow checks decision structure mechanically vialint_report.py: status vocabulary,decided_onwhere the status implies one,decided_bypresent (unknowncounts), resolvableaffectstargets, two-sided supersession,superseded/reversedmatched by asuperseded_by, unique four-digit numbers, and overduereview_on. The semantic call — whether one decision genuinely replaces another — stays with the model.ckb-ingestnow routes decisions found in raw material tockb-decide's format, with explicit guardrails against filing a proposal as accepted or guessing a decider.ckb-retrievegainedwiki/decisions/index.mdas cascade step 4 with a handoff rule.- Graph gained
decided_by(decision → person) andaffects(decision → constrained entity) edge types. - Docs updated in both languages (README/README.pl feature + skill sections, MANUAL/MANUAL.pl new §2.D walkthrough and "say this" table rows, ownership table row noting the append-only convention), plus
ckb-init(scaffold + skill list). Also fixed five stalecbk-quizpath references left from the upstream rename. - End-to-end tested on a scratch copy: a sample decision record passes lint clean and exports to OKF conformantly. That test surfaced a real bug in
export_okf.py— a Rule B log line naming a directory (wiki/decisions/(directory)) was being turned into a broken intra-bundle link;files_to_linksnow only linkifies entries that name an actual.mdfile.