Merge remote-tracking branch 'origin/development' into skill/337-reflect-self-improvement

# Conflicts:
#	.mifune/skills.lock
#	AGENTS.md
#	CHANGELOG.md
This commit is contained in:
ryaneggz committed 2026-05-22 06:31:53 +00:00
commit 8b2b9bd685
15 files changed
+401 -3

No files matched your search

+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+34
View File
@@ -0,0 +1,34 @@
---
name: caveman-commit
description: |
Write a Conventional Commit message in caveman style — terse subject,
fragment body, full technical accuracy. Subject line stays a valid
Conventional Commit (type: description).
TRIGGER when: /caveman-commit invoked, or asked for a caveman commit message.
argument-hint: "[type]"
---
# Caveman Commit
Generate a commit message that obeys the harness commit format **and** caveman compression.
Read core rules first: `.claude/skills/caveman/SKILL.md` (drop/preserve + auto-clarity).
## Rules
- **Subject**: `<type>: <description>` per `context/rules/git.md` — `feat` · `fix` · `task` · `audit` · `skill`. Imperative, lowercase, ≤50 chars, no trailing period. The subject must stay a legible Conventional Commit; compress the *description* words, not the structure.
- **Body** (optional): fragment bullets, drop articles/filler. One line per logical change.
- **Preserve verbatim**: file names, symbols, flags, issue/PR refs, breaking-change notes.
- Do **not** caveman-ify the `Co-Authored-By` trailer or `Closes #` lines.
## Example
```
fix: guard nil session in auth middleware
- add nil-check before token decode in authMiddleware
- return 401 not 500 on missing session
- covers panic from #287
```
Print the message only — do not run `git commit` unless the user asks.
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+39
View File
@@ -0,0 +1,39 @@
---
name: caveman-compress
description: |
Rewrite a target file (memory note, doc, scratch plan) in compressed
caveman form to shrink its token footprint, preserving every technical
fact, code block, and link. Shows a diff and confirms before overwriting.
TRIGGER when: /caveman-compress <file> invoked, or asked to compress a doc/memory file.
argument-hint: "<file>"
---
# Caveman Compress
Rewrite a file in compressed form. Read core rules first: `.claude/skills/caveman/SKILL.md`.
## Scope (check first — refuse out of scope)
In-scope targets only:
- files under `memory/**` (notes, daily logs)
- untracked scratch files (not committed to git)
- a file the user passes with explicit "compress this anyway" override
Everything else is **out of scope** — refuse with a one-line reason. In particular:
- `docs/**`, `blog/**`, `README.md`, `CLAUDE.md`/`AGENTS.md` — published / load-bearing prose; brevity is intentional there.
- `tasks/archive/**` and other archives — not read by default; compressing is busywork that mutates the record for ~0 live-token gain.
- `context/**`, `.claude/skills/**`, `.claude/agents/**` — auto-loaded / behavior-steering. Token budget there is `/context-audit`'s job (it has a safe ablation gate); compression here can silently change behavior.
## Procedure
1. **Read** the target file. Refuse politely if no path given, or if the path is out of scope (see above).
2. **Rewrite** prose at `full` level: drop articles/filler, fragments allowed.
3. **Preserve verbatim**: code blocks, commands, URLs/links, tables, frontmatter, file/symbol names, numbers, headings (structure intact).
4. **Show the rewrite** and an estimated token delta. **Confirm before overwriting** — this edits a tracked file; do not write without a yes.
5. On confirm, write the file. Report old → new approx token count.
## Guardrails
- **Never** compress: `LICENSE`, `CHANGELOG.md`, generated/lock files (`*.lock`, `skills.lock`), or anything under `.github/`. These have exact-format contracts.
- **Refuse** files where compression would break a parser (JSON, YAML data, `prd.json`) — compression is for human-prose docs, not machine-read data.
- Compressing a `memory/` note is fine; preserve the `## Heading -- HH:MM UTC` log structure (`context/rules/memory.md`).
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+30
View File
@@ -0,0 +1,30 @@
---
name: caveman-review
description: |
Produce PR review comments in caveman style — terse, fragment-based,
one finding per line, severity-tagged. Compresses prose, never the
cited code/symbol/line refs.
TRIGGER when: /caveman-review invoked, or asked for compressed PR review notes.
argument-hint: "[PR# or path]"
---
# Caveman Review
Compressed PR-review notes. Read core rules first: `.claude/skills/caveman/SKILL.md`.
## Rules
- One finding per line. Lead with severity: `BLOCK` / `WARN` / `NIT`.
- Fragment phrasing, drop articles/filler. Cite `file:line` verbatim.
- **Preserve verbatim**: code snippets, symbol names, suggested replacements.
- Security/irreversible findings: state them in **plain English** (auto-clarity exception) — a misread review comment on a security issue is a real cost.
## Example
```
BLOCK auth.go:42 — token compared with ==, timing-leak. use hmac.Equal.
WARN db.go:88 — query in loop, N+1. batch via WHERE id IN (...).
NIT utils.go:5 — unused import "fmt".
```
This is review *commentary* — does not post to GitHub unless the user asks.
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+33
View File
@@ -0,0 +1,33 @@
---
name: caveman-stats
description: |
Estimate caveman token savings — compare a normal-prose baseline against
its compressed form and report tokens-in / tokens-out / % reduction.
Heuristic estimate (≈4 chars/token), not exact billing.
TRIGGER when: /caveman-stats invoked, or asked how much caveman saved.
argument-hint: "[normal text | --session]"
---
# Caveman Stats
Report token savings. Read core rules first: `.claude/skills/caveman/SKILL.md`.
## Modes
- **Inline**: given a normal-prose sample, produce its `full`-level compression and report both counts.
- **`--session`**: estimate savings across caveman-active responses this session (qualitative if no exact counts available — say so).
## Method
- Heuristic token estimate: `tokens ≈ ceil(chars / 4)`. State this is an approximation, not exact API billing.
- Report: `baseline → compressed (-NN%)`.
## Example
```
baseline: 69 tok
compressed: 19 tok
saved: 50 tok (-72%)
```
Honesty rule: never inflate the savings figure. If unmeasurable, say "estimate only".
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Julius Brussee
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+89
View File
@@ -0,0 +1,89 @@
---
name: caveman
description: |
Ultra-compressed output mode. Cuts response tokens ~65–75% by speaking in
telegraphic, fragment-based phrasing while preserving full technical
accuracy. Persists across the session until explicitly disabled.
TRIGGER when: /caveman invoked, or user says "caveman mode", "talk like
caveman", "compress your output", "fewer tokens", "be terse"; disable on
"stop caveman" / "normal mode".
argument-hint: "[lite|full|ultra|wenyan]"
---
# Caveman
> why use many token when few token do trick.
Output-style skill. Adapted from [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman). Compresses *your prose* — never the technical payload. Brain still big, mouth small.
## Activation & persistence
- Activate on `/caveman [level]`, "caveman mode", "talk like caveman", or any explicit request to compress output. Default level = **full**.
- Once active, **persist across every subsequent response** in the session until the user says "stop caveman", "normal mode", or "talk normal".
- `/caveman` with no arg → keep current level if already active, else `full`.
- Announce activation in one compressed line, e.g. `caveman: full. brain big, mouth small.`
## Levels
| Level | Drops | Keeps |
|-------|-------|-------|
| `lite` | filler, hedging ("just", "really", "basically", "I think") | articles, full sentences. Professional, tightened. |
| `full` *(default)* | articles (a/an/the), pleasantries, lets fragments stand, shorter synonyms | meaning, technical terms, code |
| `ultra` | conjunctions; abbreviates common words (DB, auth, config, req, res, fn, repo); uses arrows `X → Y` | code symbols, API names, error strings — **never** abbreviated |
| `wenyan` | maximum compression via classical-Chinese register (~80–90% char reduction); classical particles (之/乃/為/其), verb-before-object | grammar legibility for a reader who reads classical Chinese |
`wenyan` is a novelty/extreme mode — only use when the user explicitly asks for it.
## Drop vs. preserve
**Drop:** articles, filler ("just", "really", "basically", "actually"), pleasantries ("sure", "certainly", "happy to"), hedging ("I think", "it seems", "perhaps"), throat-clearing preambles.
**Preserve verbatim — never compress, abbreviate, or paraphrase:**
- code blocks and inline code
- function / API / file / symbol names
- error strings and log lines
- exact commands, flags, paths
- numbers, versions, identifiers
## Auto-clarity exceptions (revert to normal prose, then resume)
Compression that risks a misread is a bug, not a feature. Drop back to plain English for:
1. **Security warnings** — anything about credentials, exposure, untrusted input, destructive blast radius.
2. **Irreversible-action confirmations** — deletes, force-pushes, prod changes, "are you sure" gates.
3. **Multi-step sequences** where terseness could scramble order or dependencies.
4. **Explicit clarity requests** — user asks "explain properly" / "in full".
Resume the active caveman level on the next ordinary response.
## Example
Normal (69 tok):
> When a component's state changes, React schedules a re-render. It then diffs the new virtual DOM against the previous one and applies only the minimal set of changes to the actual DOM, which keeps updates efficient.
`full` (19 tok):
> State change → React re-renders. Diffs new vDOM vs old, applies minimal DOM patch. Stays fast.
Same technical content. Fewer token. Lobster claw sharp, mouth small.
## Subcommands
| Command | Purpose |
|---------|---------|
| `/caveman-commit` | caveman-style conventional commit message |
| `/caveman-review` | compressed PR review comments |
| `/caveman-compress <file>` | rewrite a memory/doc file in compressed form |
| `/caveman-stats` | estimate token savings for the session |
Each subcommand inherits the **drop/preserve** and **auto-clarity** rules above.
## Memory protocol
Per `context/rules/memory.md`, append a one-line entry to `memory/<UTC-date>/log.md` after activation:
```markdown
## Caveman -- HH:MM UTC
- **Result**: OP
- **Level**: full
- **Observation**: <one line>
```
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Mifune Dev (mifune.dev)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
-1
View File
@@ -8,7 +8,6 @@ description: |
TRIGGER when: asked to audit context window, check default context load, TRIGGER when: asked to audit context window, check default context load,
"what's in my context", evaluate rules for signal vs noise, or before/after "what's in my context", evaluate rules for signal vs noise, or before/after
any change to context/rules/ or CLAUDE.md. any change to context/rules/ or CLAUDE.md.
argument-hint: "all | --baseline | --ablate <relative-path>"
--- ---
# Context Audit # Context Audit
+47 -2
View File
@@ -15,12 +15,57 @@
"installed_paths": [".claude/skills/reflect"], "installed_paths": [".claude/skills/reflect"],
"note": "Merged to github:mifunedev/skills master via PR #5. Checksum is the registry folder-algorithm value (matches the upstream entry)." "note": "Merged to github:mifunedev/skills master via PR #5. Checksum is the registry folder-algorithm value (matches the upstream entry)."
}, },
"caveman": {
"source": "github:JuliusBrussee/caveman",
"registry_version": "vendored",
"skill_version": "0.1.0",
"commit": "655b7d9c5431f822264b7732e9901c5578ac84cf",
"checksum": "sha256:afb7d709f83d3d7f259fe50ad08c1e55ec1574631d68d84b9ded98147eb29405",
"installed_paths": [".claude/skills/caveman"],
"note": "Manual/vendored adaptation of JuliusBrussee/caveman (MIT) to harness skill conventions; not from the mifunedev registry. Upstream curl|bash installer intentionally not used."
},
"caveman-commit": {
"source": "github:JuliusBrussee/caveman",
"registry_version": "vendored",
"skill_version": "0.1.0",
"commit": "655b7d9c5431f822264b7732e9901c5578ac84cf",
"checksum": "sha256:17994cce8cc17e575eb1e54bbc3f7b2aca5d27294fd190952f430d9c8ebfae1a",
"installed_paths": [".claude/skills/caveman-commit"],
"note": "Vendored caveman subcommand; see caveman entry."
},
"caveman-review": {
"source": "github:JuliusBrussee/caveman",
"registry_version": "vendored",
"skill_version": "0.1.0",
"commit": "655b7d9c5431f822264b7732e9901c5578ac84cf",
"checksum": "sha256:54728d3d76648c902a7ac57554e2123c14a258a6825532381bffcc11efb89701",
"installed_paths": [".claude/skills/caveman-review"],
"note": "Vendored caveman subcommand; see caveman entry."
},
"caveman-compress": {
"source": "github:JuliusBrussee/caveman",
"registry_version": "vendored",
"skill_version": "0.1.0",
"commit": "655b7d9c5431f822264b7732e9901c5578ac84cf",
"checksum": "sha256:ed2c75566301ec8b00756e3d4a16030aba94d1a1a6c56c5de2330456d1464695",
"installed_paths": [".claude/skills/caveman-compress"],
"note": "Vendored caveman subcommand; see caveman entry."
},
"caveman-stats": {
"source": "github:JuliusBrussee/caveman",
"registry_version": "vendored",
"skill_version": "0.1.0",
"commit": "655b7d9c5431f822264b7732e9901c5578ac84cf",
"checksum": "sha256:4cd48e8539635574309cf9bf124a98d1b9f48c4476751b11fabda7e6f7c34d98",
"installed_paths": [".claude/skills/caveman-stats"],
"note": "Vendored caveman subcommand; see caveman entry."
},
"context-audit": { "context-audit": {
"source": "github:mifunedev/skills", "source": "github:mifunedev/skills",
"registry_version": "2026.5.22", "registry_version": "2026.5.22",
"skill_version": "0.1.0", "skill_version": "0.1.0",
"commit": "1af15c40d8ddb1e76b22af2b1b0db724258a1586", "commit": "f95011fe743994778ab2a01b16d31bae21f0ca38",
"checksum": "sha256:53667528b352d239470147611a97d5882c05edca82c22c86fdaccaf36b9c7b05", "checksum": "sha256:02dd6324bb7ab62331a42fa414e2325bbb293c4e6f0ebb8aeead09f3948595a1",
"installed_paths": [".claude/skills/context-audit"] "installed_paths": [".claude/skills/context-audit"]
}, },
"agent-browser": { "agent-browser": {
+1
View File
@@ -119,6 +119,7 @@ Remove the sandbox.
| `/strategic-proposal` | 5-expert council + Critic for roadmap planning | | `/strategic-proposal` | 5-expert council + Critic for roadmap planning |
| `/render-html` | Render an artifact as a bespoke, self-contained HTML file under `memory/<date>/<slug>.html` for one-shot human review (audit synthesis, council output, lint matrix, weekly digest) | | `/render-html` | Render an artifact as a bespoke, self-contained HTML file under `memory/<date>/<slug>.html` for one-shot human review (audit synthesis, council output, lint matrix, weekly digest) |
| `/reflect` | Deliberate whole-session memory pass — scan the conversation for durable patterns, qualify-filter them, classify by tier, and propose `MEMORY.md`/`IDENTITY.md` additions for confirmation before writing (always logs). Operationalizes `context/rules/memory.md` | | `/reflect` | Deliberate whole-session memory pass — scan the conversation for durable patterns, qualify-filter them, classify by tier, and propose `MEMORY.md`/`IDENTITY.md` additions for confirmation before writing (always logs). Operationalizes `context/rules/memory.md` |
| `/caveman` | Token-compression output mode (`lite`/`full`/`ultra`/`wenyan`); subcommands `/caveman-commit`, `/caveman-review`, `/caveman-compress <file>`, `/caveman-stats`. Never compresses code, security warnings, or irreversible-action confirmations |
Provision / destroy / repair are plain `docker compose` commands — see Provision / destroy / repair are plain `docker compose` commands — see
the `Lifecycle` section above. There is no dedicated skill. the `Lifecycle` section above. There is no dedicated skill.
+2
View File
@@ -10,6 +10,7 @@ Update policy and release automation live in [`.claude/rules/git.md`](.claude/ru
### Added ### Added
- `/reflect` skill (`.claude/skills/reflect/SKILL.md`) — deliberate whole-session "Improve" pass that operationalizes the Memory Improvement Protocol (`context/rules/memory.md`): scans the current conversation for durable behavioral patterns, applies the qualify filter, classifies survivors by tier, and proposes `memory/MEMORY.md` / `context/IDENTITY.md` additions for explicit confirmation before writing (log-tier entry always appended). Manual-trigger, current-session scope, propose-then-confirm. Authored via the skill-builder agent for `github:mifunedev/skills` ([#337](https://github.com/ryaneggz/open-harness/issues/337)). - `/reflect` skill (`.claude/skills/reflect/SKILL.md`) — deliberate whole-session "Improve" pass that operationalizes the Memory Improvement Protocol (`context/rules/memory.md`): scans the current conversation for durable behavioral patterns, applies the qualify filter, classifies survivors by tier, and proposes `memory/MEMORY.md` / `context/IDENTITY.md` additions for explicit confirmation before writing (log-tier entry always appended). Manual-trigger, current-session scope, propose-then-confirm. Authored via the skill-builder agent for `github:mifunedev/skills` ([#337](https://github.com/ryaneggz/open-harness/issues/337)).
- `/caveman` token-compression skill + subcommands (`.claude/skills/caveman{,-commit,-review,-compress,-stats}/`) — output-style mode that compresses agent prose ~65–75% via telegraphic phrasing while preserving code, API names, error strings, security warnings, and irreversible-action confirmations verbatim. Levels: `lite`/`full`/`ultra`/`wenyan`. Vendored adaptation of [JuliusBrussee/caveman](https://github.com/JuliusBrussee/caveman) (MIT, commit `655b7d9`) authored natively to harness skill conventions; upstream `curl | bash` installer intentionally not run. Pinned in `.mifune/skills.lock` as manual/vendored entries ([#335](https://github.com/ryaneggz/open-harness/issues/335)).
- `/context-audit` skill (`.claude/skills/context-audit/`) — data-backed, repeatable eval for the default-loaded context budget. Tier-1 scores each file on 4 dimensions (footprint, load-bearing, integrity, redundancy) and emits KEEP/TRIM/DEMOTE/CUT verdicts. Tier-2 ablation harness (`runner.sh` + 7 probe files) removes a target file, runs a fixed task suite via `claude -p`, and measures behavior degradation — the only provably safe gate for cutting load-bearing content ([#333](https://github.com/ryaneggz/open-harness/issues/333)). - `/context-audit` skill (`.claude/skills/context-audit/`) — data-backed, repeatable eval for the default-loaded context budget. Tier-1 scores each file on 4 dimensions (footprint, load-bearing, integrity, redundancy) and emits KEEP/TRIM/DEMOTE/CUT verdicts. Tier-2 ablation harness (`runner.sh` + 7 probe files) removes a target file, runs a fixed task suite via `claude -p`, and measures behavior degradation — the only provably safe gate for cutting load-bearing content ([#333](https://github.com/ryaneggz/open-harness/issues/333)).
- `/render-html` skill (`.claude/skills/render-html/SKILL.md`) — orchestrator skill for rendering an artifact as a bespoke, self-contained HTML file under `memory/<UTC-date>/<slug>.html` for one-shot human review (audit synthesis, council output, lint matrix, weekly digest). Output is gitignored via existing `memory/[0-9]*/` rule ([#314](https://github.com/ryaneggz/open-harness/issues/314)). - `/render-html` skill (`.claude/skills/render-html/SKILL.md`) — orchestrator skill for rendering an artifact as a bespoke, self-contained HTML file under `memory/<UTC-date>/<slug>.html` for one-shot human review (audit synthesis, council output, lint matrix, weekly digest). Output is gitignored via existing `memory/[0-9]*/` rule ([#314](https://github.com/ryaneggz/open-harness/issues/314)).
- `/interview` skill (`.claude/skills/interview/SKILL.md`) — adaptive pre-work clarifier that batches 2–4 task-specific questions through `AskUserQuestion`, echoes a 2–3 sentence scope brief, and proceeds. Skips trivial tasks with an announcement. Serves as the in-tree reference pattern for `AskUserQuestion`-based elicitation in future skills ([#316](https://github.com/ryaneggz/open-harness/issues/316)). - `/interview` skill (`.claude/skills/interview/SKILL.md`) — adaptive pre-work clarifier that batches 2–4 task-specific questions through `AskUserQuestion`, echoes a 2–3 sentence scope brief, and proceeds. Skips trivial tasks with an announcement. Serves as the in-tree reference pattern for `AskUserQuestion`-based elicitation in future skills ([#316](https://github.com/ryaneggz/open-harness/issues/316)).
@@ -18,6 +19,7 @@ Update policy and release automation live in [`.claude/rules/git.md`](.claude/ru
- All 15 skills in `.claude/skills/` now sourced from and version-pinned to `github.com/mifunedev/skills` (commit `c559c100`) via `.mifune/skills.lock`; `interview` and `render-html` contributed upstream and added to the lock ([#327](https://github.com/ryaneggz/open-harness/issues/327)). - All 15 skills in `.claude/skills/` now sourced from and version-pinned to `github.com/mifunedev/skills` (commit `c559c100`) via `.mifune/skills.lock`; `interview` and `render-html` contributed upstream and added to the lock ([#327](https://github.com/ryaneggz/open-harness/issues/327)).
- `README.md`, `docs/installation.md`, and `docs/quickstart.md` restructured to surface fork-and-clone and clone-and-own as first-class install paths alongside the upstream one-liner; `scripts/install.sh` local-run detection is now the documented bootstrap for self-hosters ([#331](https://github.com/ryaneggz/open-harness/issues/331)). - `README.md`, `docs/installation.md`, and `docs/quickstart.md` restructured to surface fork-and-clone and clone-and-own as first-class install paths alongside the upstream one-liner; `scripts/install.sh` local-run detection is now the documented bootstrap for self-hosters ([#331](https://github.com/ryaneggz/open-harness/issues/331)).
- Skill `LICENSE` files updated to `Copyright (c) 2026 Mifune Dev (mifune.dev)` to match upstream correction. - Skill `LICENSE` files updated to `Copyright (c) 2026 Mifune Dev (mifune.dev)` to match upstream correction.
- Re-synced `context-audit` to the portable upstream form ([mifunedev/skills#6](https://github.com/mifunedev/skills/pull/6)): removed the top-level `argument-hint` frontmatter key, repinned `.mifune/skills.lock` (`commit` `f95011fe`, checksum `02dd6324`), and added the previously-missing `LICENSE` for folder parity ([#339](https://github.com/ryaneggz/open-harness/issues/339)).
### Fixed ### Fixed
### Removed ### Removed
- `config.example.json` and its install-time seeding step (`scripts/install.sh`); the base ships zero compose overlays and all readers tolerate a missing `config.json`, so the example template was dead weight. Packs that need overlays create their own `config.json` ([#323](https://github.com/ryaneggz/open-harness/issues/323)). - `config.example.json` and its install-time seeding step (`scripts/install.sh`); the base ships zero compose overlays and all readers tolerate a missing `config.json`, so the example template was dead weight. Packs that need overlays create their own `config.json` ([#323](https://github.com/ryaneggz/open-harness/issues/323)).