@csark0812/skeleton 1.5.7 → 1.6.1
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 +32 -23
- package/dist/cli.js +1750 -701
- package/dist/hooks/customize-on-skill-read.js +961 -223
- package/dist/plugin-types.d.ts +19 -3
- package/package.json +3 -6
- package/schemas/config.schema.json +57 -9
- package/templates/skeleton-init/config.yaml +5 -4
- package/templates/skeleton-init/skeleton.toml +37 -0
- package/templates/skeleton-init/registry.md +0 -10
package/README.md
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
# Skeleton
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<!-- source-of-truth: Package overview -->
|
|
4
4
|
|
|
5
|
-
<!-- doc-meta: owner=eng | last-reviewed=2026-
|
|
5
|
+
<!-- doc-meta: owner=eng | last-reviewed=2026-08-16 -->
|
|
6
6
|
|
|
7
7
|
Agent repos get messy fast. Skills get copied around, docs disagree, links go stale, and nobody remembers which file is actually canonical.
|
|
8
8
|
|
|
9
|
-
Skeleton is an SSOT linter for that layer. Define the contract once; Skeleton checks it locally and in CI. If a canonical doc disappears,
|
|
9
|
+
Skeleton is an SSOT linter for that layer. Define the contract once; Skeleton checks it locally and in CI. If a canonical doc disappears, SSOT markers drift, a skill index stops matching disk, or a generated reference gets edited by hand, the audit fails before merge.
|
|
10
10
|
|
|
11
11
|
Think ESLint — for the docs and skills your agents rely on.
|
|
12
12
|
|
|
@@ -20,7 +20,7 @@ That needs to be explicit — and stay true after the next 50 PRs. Skeleton turn
|
|
|
20
20
|
|
|
21
21
|
| Code repos | Agent repos |
|
|
22
22
|
| ------------------------------------------------------- | -------------------------------------------------------------------------------------- |
|
|
23
|
-
| ESLint catches broken imports, unused vars, style drift | Skeleton catches broken links,
|
|
23
|
+
| ESLint catches broken imports, unused vars, style drift | Skeleton catches broken links, bad SSOT markers, stale doc-meta, deny.paths artifacts |
|
|
24
24
|
| `eslint --fix` on changed files | `skeleton validate changed` on changed docs and skills |
|
|
25
25
|
| Pre-commit + CI gate | `--staged` pre-commit + `--base` CI gate |
|
|
26
26
|
|
|
@@ -36,7 +36,7 @@ Does an intact Skeleton contract change agent behavior — grounding on the righ
|
|
|
36
36
|
|
|
37
37
|
### What we did
|
|
38
38
|
|
|
39
|
-
We ran a paired live A/B harness with [`@post-print/agent-test`](https://www.npmjs.com/package/@post-print/agent-test): `skeleton-clean` vs `skeleton-messy`. Same prompts and scenario set; the only intentional difference was
|
|
39
|
+
We ran a paired live A/B harness with [`@post-print/agent-test`](https://www.npmjs.com/package/@post-print/agent-test): `skeleton-clean` vs `skeleton-messy`. Same prompts and scenario set; the only intentional difference was SSOT / conflict structure and context profile.
|
|
40
40
|
|
|
41
41
|
Scenarios covered contested grounding (conflicting docs), docs-only validation routing, canonical grounding, owned-skill routing, and customize ownership. Protocol: **N=10** sequential paired compares on 2026-07-17; McNemar on paired pass/fail; median token deltas with a bootstrap CI on the mean.
|
|
42
42
|
|
|
@@ -50,7 +50,7 @@ Full method: [refs/llm-harness.md](refs/llm-harness.md). Suites: [agent-suites/R
|
|
|
50
50
|
|
|
51
51
|
On tasks that depend on an intact SSOT, the clean fixture was both more accurate and cheaper:
|
|
52
52
|
|
|
53
|
-
- **Contested grounding** — In every paired run, clean settled on the
|
|
53
|
+
- **Contested grounding** — In every paired run, clean settled on the SSOT canonical; messy never did (McNemar p = 0.002). Clean hops the catalog/SSOT path; messy thrashes across conflicting docs.
|
|
54
54
|
- **Docs routing** — Clean consistently chose the correct audit lane; messy invented a non-existent `audit all` path (McNemar p = 0.002).
|
|
55
55
|
- **Token cost** — Across grounding tasks, messy used a median **~312k** more tokens than clean (bootstrap 95% CI on the mean excludes 0). Pass rate alone understates the gap: messy can still luck into an answer while spending far more.
|
|
56
56
|
|
|
@@ -76,50 +76,59 @@ npm install -D @csark0812/skeleton
|
|
|
76
76
|
npx skeleton init --skills
|
|
77
77
|
```
|
|
78
78
|
|
|
79
|
-
That writes `.skeleton/`, adds
|
|
79
|
+
That writes `skeleton.toml`, ensures `.skeleton/customize/`, adds validation scripts, and may wire **optional** customize hooks for Cursor, Claude Code, and Codex.
|
|
80
80
|
|
|
81
|
-
Edit
|
|
81
|
+
Edit `skeleton.toml` for your repo layout, then verify:
|
|
82
82
|
|
|
83
83
|
```bash
|
|
84
|
-
npx skeleton
|
|
84
|
+
npx skeleton catalog
|
|
85
|
+
npx skeleton audit docs
|
|
85
86
|
```
|
|
86
87
|
|
|
87
88
|
Flag details: [install](docs/developer/install.md).
|
|
88
89
|
|
|
89
90
|
## What it checks
|
|
90
91
|
|
|
91
|
-
- **
|
|
92
|
+
- **SSOT markers** — opt-in `source-of-truth` (comment or visible); dual/malformed forms fail; legacy banners accepted
|
|
93
|
+
- **Near-duplicate docs** — shingle overlap + duplicate SSOT summaries (warn / `--strict`)
|
|
94
|
+
- **SSOT summary fit** — heuristic overlap between the one-liner and the body (warn / `--strict`)
|
|
92
95
|
- **Link audit** — broken refs, skill links, anchors in scanned markdown
|
|
93
96
|
- **Skill index** — disk matches taxonomy READMEs in detected skill roots
|
|
94
|
-
- **
|
|
97
|
+
- **deny.paths** — globs for files that must not exist (often outside `scan.include`)
|
|
95
98
|
- **Coverage gaps** — markdown outside the scan perimeter (warn-only)
|
|
96
|
-
- **Doc meta + stale dates** — owner and `last-reviewed` on
|
|
99
|
+
- **Doc meta + stale dates** — owner and `last-reviewed` on indexes and SSOT-bearing files
|
|
97
100
|
- **Prose policy** (optional plugins) — YAML pattern rules; idle with no plugins
|
|
98
101
|
- **Shell / JSON syntax** — lightweight checks on changed `.sh` and `.json` files
|
|
99
102
|
|
|
103
|
+
Agents skim `.skeleton/catalog.md` (generated, gitignored) before opening full papers.
|
|
104
|
+
|
|
100
105
|
Skeleton doesn't replace your code gates. Keep TypeScript, Python, Nx, pytest, and the rest in the repo that owns them.
|
|
101
106
|
|
|
102
|
-
## The
|
|
107
|
+
## The contract
|
|
108
|
+
|
|
109
|
+
Config lives in **`skeleton.toml`** at the repo root (preferred). Optional under `.skeleton/`:
|
|
103
110
|
|
|
104
111
|
```
|
|
112
|
+
skeleton.toml # scan perimeter, deny.paths, docsLint, …
|
|
105
113
|
.skeleton/
|
|
106
|
-
├──
|
|
107
|
-
├──
|
|
108
|
-
|
|
109
|
-
└── customize/ # project-specific skill overrides (optional)
|
|
114
|
+
├── catalog.md # generated by `skeleton catalog` (gitignored)
|
|
115
|
+
├── plugins/ # optional consumer audit plugins (.ts + built .mjs)
|
|
116
|
+
└── customize/ # project-specific skill overrides (optional)
|
|
110
117
|
└── code-review.md
|
|
111
118
|
```
|
|
112
119
|
|
|
113
|
-
|
|
120
|
+
Legacy `.skeleton/config.yaml` still loads when no TOML is present.
|
|
121
|
+
|
|
122
|
+
Every canonical doc opts into the catalog with a marker:
|
|
114
123
|
|
|
115
124
|
```markdown
|
|
116
|
-
|
|
125
|
+
<!-- source-of-truth: Backend API conventions -->
|
|
117
126
|
```
|
|
118
127
|
|
|
119
|
-
|
|
128
|
+
Then refresh the agent index:
|
|
120
129
|
|
|
121
130
|
```bash
|
|
122
|
-
skeleton
|
|
131
|
+
skeleton catalog
|
|
123
132
|
```
|
|
124
133
|
|
|
125
134
|
Synced skills stay pristine. Project overrides live in `.skeleton/customize/<slug>.md` and inject when the skill is read — no editing copied `SKILL.md` files.
|
|
@@ -128,8 +137,8 @@ Synced skills stay pristine. Project overrides live in `.skeleton/customize/<slu
|
|
|
128
137
|
|
|
129
138
|
```bash
|
|
130
139
|
skeleton init [--skills] [--force-hooks]
|
|
131
|
-
skeleton
|
|
132
|
-
skeleton audit docs|skills|self [--strict] [--paths=a,b] [--fix[=doc-meta|anchors]] [--dry-run]
|
|
140
|
+
skeleton catalog [--check]
|
|
141
|
+
skeleton audit docs|skills|self [--strict] [--paths=a,b] [--fix[=doc-meta|anchors|ssot]] [--dry-run]
|
|
133
142
|
skeleton build-plugin [path] [--check]
|
|
134
143
|
skeleton validate changed [--staged | --base <ref>] [paths…]
|
|
135
144
|
skeleton references sync|check
|