Commit Graph

47 Commits

Author SHA1 Message Date
99df169fbd Relax Wayfinder session ticket limit 2026-07-31 20:46:14 -04:00
8035e0e436 Allow AFK prototype tickets 2026-07-31 20:43:18 -04:00
012a4bfd1e Unify Wayfinder ticket artifacts 2026-07-31 20:38:27 -04:00
b5c6e33730 Tighten grill turn-ending protocol 2026-07-31 19:36:03 -04:00
778e726d4c Trim redundant skill-build fixture 2026-07-31 18:51:34 -04:00
d3bc9a5760 Remove benchmark skill 2026-07-31 18:50:42 -04:00
8479ad096c Remove obsolete skills placeholder 2026-07-31 18:48:54 -04:00
d0c9f94713 Remove consume and wiki skills 2026-07-31 18:45:55 -04:00
942d32dcba Make artifact naming destination-driven 2026-07-31 18:45:11 -04:00
96f795a63a fix(wayfinder): simplify map references 2026-07-31 16:03:00 -04:00
80cecf3350 feat(skills): adapt planning skills to artifact workflow 2026-07-31 15:13:31 -04:00
181dcc7a9e docs: record gitea-axi view limitation 2026-07-31 10:41:45 -04:00
7d22ff0c02 fix(skills): align invocation and prose conventions 2026-07-31 10:40:56 -04:00
4da2452084 feat(wayfinder): add artifact-backed planning skill 2026-07-31 10:35:25 -04:00
7550096968 feat(prototype): add throwaway prototype skill 2026-07-31 10:28:50 -04:00
cbc03650d1 feat(research): add durable research skill 2026-07-31 10:05:24 -04:00
8ad93c7617 feat(skills): support flat numbered artifacts 2026-07-31 09:23:13 -04:00
43280e4d4a fix(design-skill): tighten predictability checks 2026-07-30 19:34:41 -04:00
f72c262229 Add design-skill skill 2026-07-30 19:03:29 -04:00
fbd009337d Remove obsolete project skill placeholder 2026-07-30 00:30:19 -04:00
920517e623 Add project skills to dev shell 2026-07-30 00:28:43 -04:00
6bb3242e7f Move consume artifacts to artifact store 2026-07-30 00:24:52 -04:00
fb16c891b2 Move wiki source to artifact store 2026-07-30 00:15:15 -04:00
5886017976 Move grill artifacts outside project repos 2026-07-30 00:05:59 -04:00
b541251f98 feat(agents): make skill metadata agent-agnostic 2026-07-29 22:39:02 -04:00
40b37281d5 fix(shell): keep generated ignores visible to Pi 2026-07-29 17:01:22 -04:00
02f2017b40 feat(shell): deliver project skills through .agents 2026-07-29 11:54:36 -04:00
c6beafc53e fix(consume): quote Pi skill description 2026-07-29 09:13:42 -04:00
a4b88f8f42 feat(home-manager): place skills for Pi 2026-07-29 08:07:09 -04:00
ea8e2c50bc feat: add grill skill merging domain-modeling
Combine the interview-driven grill and the domain-modeling discipline into a
single model-invokable grill skill, so other skills can reach it as a backbone.

- One question at a time, each with options plus a recommendation and rationale,
  and a context quote when it turns on existing material.
- Agent-agnostic mode selection: discover .agents/CONTEXT.md then
  .claude/CONTEXT.md, and drive Domain Modeling, Free, or Clarification.
- Domain Modeling Mode maintains the glossary inline (CONTEXT-FORMAT.md) and
  offers ADRs under the three-gate test.
- Never begin implementation without an explicit user instruction, even when a
  caller skill invoked grill.
2026-07-25 16:10:40 -04:00
1e9d19fe3d chore: clear consumed spec and task scaffolding
Both spec docs and tasks 0001-0008 were mined into the personal wiki by
/consume; delete the scaffolding it consumed, leaving the now-empty spec/
and tasks/ directories in place.
2026-07-25 11:19:47 -04:00
52fc449824 feat: route consume knowledge to two channels (#9-#14)
Reworks the consume skill around two acceptance axes and two destinations,
implementing the six issues filed from the first real consume run as one design.

- Add trigger-ability as a second acceptance axis alongside generalizes, with
  its two premises; a pull-channel note now requires both (#9).
- Give consume a push channel — the target's own CLAUDE.md — for knowledge that
  fails an axis but is still useful: specific residue or proactive rules (#10).
- Name the general-lesson/specific-residue split and route each half (#12).
- Make the step-5 plan report a complete ledger with a per-note trigger line,
  push write-set, ref-fixes, flagged-not-authored, and drops (#13).
- Extend project cleanup to reconcile CLAUDE.md (capture-gated removal/trim) and
  fix references to deleted files wherever they land (#11).
- Encode a branch-owned output location: project notes flat under
  01 sources/claude/projects/, honoring any pre-existing grouping (#14).

Records the resolved vocabulary in .claude/CONTEXT.md and the two-channel write
decision in .claude/adr/0001.

Closes #9
Closes #10
Closes #11
Closes #12
Closes #13
Closes #14
2026-07-24 22:22:28 -04:00
8c17f3aeb8 feat: add consume skill for mining knowledge into the vault
/consume is the write-side counterpart to the read-only /wiki: it mines a
target for generalized, transferable knowledge and files atomic concept
notes into 01 sources/claude/, the agent-owned area of the Obsidian vault.

It is user-invoked/deliberate. SKILL.md holds the branch-detection ladder
plus the common writing logic — read existing knowledge (via /wiki and a
direct scan), plan atomic generalized notes with a file-to-section-to-note
contribution map, present an HTML plan and wait for explicit approval, then
write on the vault's note template and clear the consumed scaffolding.

v1 ships one branch, project.md: source code is truth for current state,
while .claude/spec and .claude/tasks are the record of why (mined, then
deleted). The ladder is extensible for future source types.
2026-07-24 20:03:44 -04:00
0a8b5c2096 feat: add wiki skill for read-only vault lookup
A model-invoked skill that answers questions from the user's Obsidian
vault, read-only, over the filesystem. Enforces the vault's own
settings.json deny-Read globs itself, since the harness does not apply
them when running from another directory. Uses the 02 tags/ hubs as a
recall backstop and reads to saturation, then answers with per-note
provenance.
2026-07-24 20:03:44 -04:00
97c0eeb055 feat: add all-skills leaderboard (task 0007)
Add a second pure transform to the benchmark core: a `--leaderboard` mode
that ranks per-skill results models into an index leaderboard, one row per
skill carrying both verdicts, links out to each per-skill report, and sorts
any red first (regressions above efficacy failures), then fragile-but-passing,
then clean green.

The fragile tier reuses the 0006 per-badge chips: the efficacy chip now
carries its win count so the leaderboard reads it against the pass floor
without recomputing margins, and fragility is scoped to the passing tier so a
red row never carries a chip. The runner's SKILL.md gains the no-argument
batch flow and the index invocation. The fixture test covers the tiered sort,
the not-applicable Regression cell, and the per-skill links.
2026-07-24 16:58:02 -04:00
f4df5d31c9 feat: add trend history and ribbons (task 0006)
Add the longitudinal layer to the benchmark core: a per-skill JSON-lines
history that appends one summary line per run and trims oldest-first at
fifty, two stacked net-margin trend ribbons (Efficacy and Regression, the
latter leaving a gap for two-arm runs) with the current run ringed and a
net/delta/green-count readout, and per-badge fragility chips that flag the
narrowest passing case on each green axis so a barely-green skill cannot
look robust.

History persistence is opt-in via --history and is the core's only side
effect. Without it the core stays a pure transform. Two committed fixtures
(clean and fragile) and new fixture-test sections cover the append-and-trim,
both ribbons including the two-arm gap, and the chips.
2026-07-24 16:37:23 -04:00
9b40d9f4e5 feat: add regression arm and two verdicts (task 0005)
Turn a benchmark run into a three-arm experiment: alongside the new-skill
and no-skill arms, add a previous-version arm materialized from the
default branch's HEAD, drawn automatically whenever the skill's directory
differs from HEAD and degrading to the two-arm efficacy-only shape
otherwise. Two blind head-to-heads now fall out per trial — efficacy
(new-vs-no-skill) and regression (new-vs-old).

The deterministic core dispatches a pass rule per comparison (efficacy at
wins>=3 and losses<=1, regression at losses<=1 with no wins floor),
gates only Efficacy on the hard assertion, and yields a second
skill-level Regression verdict, green when no case regressed and
not-applicable on a two-arm run. The report gains a second badge, a
headline reading both verdicts together, a previous-version cost row with
a two-ratio footnote, and per-case side-by-side comparisons that
auto-expand on any failure or flagged loss to show the losing-trial
output pair.

The fixture test covers both shapes in one test: a three-arm run
asserting per-arm metrics, both per-case and skill-level verdicts, the
net margins, the three-row cost table and losing-trial evidence, and the
two-arm run retained as the degenerate no-previous-version case.
2026-07-24 15:23:10 -04:00
5db98dcab9 refactor: tighten benchmark-skill instructions per craft-skill audit
Collapse duplication so each rule has one home: the pass-rule threshold
and cost footnote defer to the core, and the case-contract detail defers
to CASE-FORMAT.md. Drop editor-facing sediment from the arms step.

Fixes surfaced by a verify walk-through: define the hard-assertion gate
as passing only when every predicate exits zero (an earlier failure was
maskable by a later success), state that in-session arms run at the
session default temperature, name the fixture directory, and note the
steps run from the repo root.
2026-07-24 15:01:56 -04:00
3e96db664c docs: add skill-benchmarking spec
Bring the feature's design record into git (it was authored across the
benchmark tasks but never committed). Cleaned to the repo's prose
standards on the way in: recast prose semicolons as separate sentences
and split multi-sentence lines to one sentence per line.
2026-07-24 14:42:20 -04:00
613e423617 feat: isolate benchmark arms in fixture-only worlds (task 0008)
Run each benchmark arm in a hermetic fixture-only world materialized
outside the repo, so the no-skill baseline can no longer discover the
skill's assets on disk. The new-skill arm's skill is materialized to an
isolated temp path it is pointed at; the baseline gets no skill and is
told to stay within its world.

A live 5-trial axi-review run confirms the fix: all baseline transcripts
are clean of AXI-PRINCIPLES.md, the baselines invent their own generic
rubric (the honest counterfactual), and the Efficacy verdict is green
5/5 where the contaminated 0004 run had scored red 2/5.

Runner prose only; the deterministic core is untouched.
2026-07-24 14:28:05 -04:00
ab2c05acb2 feat: add dev shell with python3 and the benchmark skill (task 0004)
nix develop places benchmark-skill into ./.claude/skills/ (so /benchmark-skill
is available in this repo) and puts python3 on PATH to run the deterministic
core without a one-off nix shell.
2026-07-24 09:01:24 -04:00
e35ed9d05b feat: add efficacy-benchmark tracer bullet (task 0004)
Introduce the thinnest complete path that benchmarks a skill's efficacy
against a no-skill baseline and renders an HTML report.

- tests/ convention: a top-level tree mirroring skills/ by full path, with
  case directories holding a case.md (CASE-FORMAT.md) and an optional fixture.
- benchmark-skill: a distributed, non-model-invocable runner (/benchmark-skill
  <name>) that orchestrates force-invoked new-skill and skill-absent baseline
  arms plus a blind per-trial judge as in-session subagents.
- Deterministic core (Python): a pure transform over the collected run data
  that sums per-arm usage, collapses each trial to WIN/TIE/LOSS, applies the
  efficacy pass rule (wins >= 3, losses <= 1), and renders a self-contained
  report. Parameterized over arms and comparisons; two-arm here.
- Fixture-driven no-LLM check (checks/benchmark-core.nix) wired into flake.nix.
- Real tests tree for axi-review; a live run produced its efficacy report.
2026-07-24 08:55:55 -04:00
1caf18d72d feat: add axi-review skill
Review a CLI against the 10 canonical AXI principles black-box: run a
staged battery of read and write probes against a user-provided target,
judge each principle strictly against axi.md, and emit a report-card
table.

Ships as SKILL.md plus AXI-PRINCIPLES.md (per-principle rubric with
probes and PASS/PARTIAL/FAIL criteria) and REPORT-FORMAT.md (the
single-table card format and verdict vocabulary).

Claude-Session: https://claude.ai/code/session_015uc7R6zNYZpCxFWJMXrxwh
2026-07-22 23:22:27 -04:00
49a73c30d1 feat: add per-project dev-shell skills placement (task 0003)
Expose lib.mkSkillsShellHook, which takes a list of selected skill derivations
and returns a dev-shell shellHook string. On shell entry the hook symlinks each
selected skill as a direct child of the project's .claude/skills/, pointing into
the store. It is stateless: each entry first removes only store-pointing symlinks
(deselected skills included), then relinks the current selection, leaving
hand-authored real directories untouched and regenerating a self-ignoring
.gitignore of the managed names. Add a nix flake check that sources the produced
hook against a fixture project and asserts placement, stale-removal, the
collision guard, non-store-symlink survival, and the .gitignore contents.
2026-07-22 22:22:38 -04:00
b0a763e5ce feat: add global-placement home-manager module (task 0002)
Expose homeModules.default, a home-manager module whose programs.agents.skills
option places operator-selected skill derivations into Claude Code's skills
directory, one recursive home.file per skill, gated on programs.claude-code.enable
and sourcing configDir from the claude-code module. Add a nix flake check that
builds the home-files tree under several operator configurations and asserts
placement, recursion, the enable gate, configDir sourcing, and coexistence with
an operator's own skills.
2026-07-22 17:18:05 -04:00
8622b35f48 feat: package skills as per-skill Nix derivations (task 0001)
Add the content tier: a standalone flake that auto-discovers each skill
(a directory containing a SKILL.md, at any depth) and exposes it as an
individually addressable derivation built by lib.mkSkill. Directories
without a SKILL.md are descended through as cosmetic containers; once a
SKILL.md is found, that directory's subfolders are its assets, not
further skills. Skill names must be globally unique across the tree — a
collision is a hard eval-time error, not a warning.

A fixture-driven skill-build check under `nix flake check` exercises the
recursive walk, the builder, the SKILL.md-at-$out-root contract, the
eval-time name passthru, and the collision error. The repo ships no real
skill content yet, so packages.<system> is empty today.
2026-07-22 16:51:40 -04:00
9068aa44f9 Initial commit 2026-07-21 12:36:50 -04:00