count — Claude Code skill: your project's north-star row
Reads your repository and prints one line: when the first source file landed, how many decisions came before it, how many sessions there were. Sends nothing anywhere.
npx skills add haabe/mycelium --skill count -a claude-codeWhat count does
The skill opens .claude/harness/decision-log.md, the project canvas and the hook logs, then outputs a single line. It covers the date of the first code file outside .claude/ and docs/, how many dated journal entries exist on or before that day, how many of those point at outside sources, cycles killed before code, and the count of distinct sessions.
That outside-evidence figure is a lexical proxy. The skill itself calls it an upper bound, since a link to your own notes also matches the pattern. When the number matters, read the entries by hand. The L0–L2 condition stays out of the row: journal entries carry no scale, and inventing one would fake the count.
The skill expects the Mycelium framework around it. Run standalone and you lose the canvas state, the theory gates and the hook behaviour it assumes. Without git, or before any code file exists, the date field reads unknown and nothing counts as earlier. A row of zeros is still an answer about the record: either the decisions came after the first source file, or nobody logged them. The date and the dated-entry count tell you which.
What it helps with
- see how many decisions were logged before the first source file
- separate entries citing outside evidence from the rest
- count cycles killed and solutions archived before code
- find the number of sessions from the hook logs
- get a metrics line without shipping data off the machine
Example prompts for the agent
- Run the count skill and print my project's row
- How many decisions came before the first source file? Use count
- Run
count_builder_row.pyand tell me what the zeros mean
How to install count
1Skills CLI (Vercel)
npx skills add haabe/mycelium --skill count -a claude-code2Manually: put the files in place
~/.claude/skills/count/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/count/
1Skills CLI (Vercel)
npx skills add haabe/mycelium --skill count -a codex2Manually: put the files in place
.agents/skills/count/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add haabe/mycelium --skill count -a cursor2Manually: put the files in place
.cursor/skills/count/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install haabe/mycelium count2Manually: put the files in place
.github/skills/count/SKILL.md1Skills CLI (Vercel)
npx skills add haabe/mycelium --skill count -a gemini-cli2Platform CLI
gemini skills install https://github.com/haabe/mycelium --path plugins/mycelium/skills/countManually: put the files in place
.devin/skills/count/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add haabe/mycelium --skill count -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about count
How do I install count in Claude Code?
Run npx skills add haabe/mycelium --skill count -a claude-code. The skill file lands at ~/.claude/skills/count/SKILL.md.
What does count do?
It prints one line built from your decision log, canvas and hook logs: the first source file's date, decisions logged before it, how many cite outside sources, cycles killed before code, and sessions. It writes nothing and sends nothing.
Does count work without Mycelium?
It is meant to run inside the Mycelium framework. Outside it you lose the canvas state, theory gates and hook behaviour the skill relies on.
Source text
SKILL.md · MIT
---
name: count
description: Print your own north-star row from your own record, and nothing else. Reads .claude/harness/decision-log.md, the canvas and the hook logs in this project; prints one line (decisions before the first source file, of which citing outside evidence, kills before code, sessions). Sends nothing anywhere. Opt-in; paste the line where you like or not at all.
metadata:
framework_dependency: "mycelium"
framework_dependency_note: "This skill is designed to run within the Mycelium framework (https://github.com/haabe/mycelium). Standalone use will skip the canvas state, theory gates, and harness behavior the skill assumes. Install: /plugin install mycelium@haabe-mycelium."
---
# Count: your own row, from your own record
Mycelium's north star is a hypothesis (dogfood DL-1177, 2026-09-07): a builder who makes at least
one build-or-kill decision on evidence from outside their own head, before their project's first
source file, is the builder who comes back and later says the brief changed what they built. There
is no telemetry by design (PRIVACY.md). This command is the opt-in half: it reads your repository
and prints one line. It writes nothing and sends nothing.
## Run
```bash
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/count_builder_row.py" --project-dir .
```
Output, one line plus what it means:
```
mycelium row | first source file 2026-06-02 | decisions before it 4 (of 31 dated) | citing outside evidence 2 (lexical proxy, upper bound) | kills before code 1 | sessions 12
```
## What the numbers are, and which are proxies
- **first source file**: the first commit that added a code file outside `.claude/` and `docs/`. Without git, or before any such file, it reads `unknown` and nothing is "before" it.
- **decisions before it**: dated entries in your decision log on or before that day.
- **citing outside evidence**: an entry carrying a URL, an `external_*` source class, a `(per ...)` citation or an interview word. **A lexical proxy and an upper bound**: the unit asks for a person in the pipeline or a fact about the market, and a link to your own notes matches too. Read the entries if the number matters.
- **kills before code**: cycle rows killed or archived, and archived solutions, dated on or before that day.
- **sessions**: distinct session ids in the read-log and change-log the hooks write.
The discovery-layer condition (L0 to L2) is not applied, because decision-log entries carry no
scale and guessing one would manufacture the count. Say so if you paste the line.
## Rules
- Never write the line into a canvas or a decision log on the builder's behalf; the row is theirs.
- Never call out. The maintainer's proxy sheet gains rows only from what people choose to paste (an issue on the framework repo, a message, nothing).
- If the line is 0 across the board, that is a real answer about the record, not a failure of the builder: it means the decisions were made after the first source file, or were not logged. Say which, from the `first source file` date and the `of N dated` count.
© haabe · MIT · haabe/mycelium