Repository navigation
Releases: DinoQuinten/engineering-skill
Release list
v1.7.0
discipline 1.7.0
Skills are now authored in one place, the context budget is measured instead of guessed, and every rule from both previously divergent copies is merged.
Measured the real context cap
The 9 KB / ~8 KB ceilings in the hook comments and README were guesses. Bisected against live sessions:
| Payload | Result |
|---|---|
| 10,000 chars | delivered inline |
| 10,081 chars | replaced by a ~1.7 KB preview, remainder silently unavailable |
The cap is 10,000 characters of additionalContext. test/inject-skills.test.mjs now enforces a 9,800-char budget against the real skills/ directory, so the limit is a test rather than a comment.
Frontmatter stripped at injection
All three injectors — the Node hook, the Pi extension, and the personal Python hook — now drop the YAML block before emitting. It is disk-only metadata (mandatory on Codex, required for OpenCode to advertise a skill) and it contradicted the preamble telling the model not to invoke these skills. Worth ~1.7 KB across the three skills. Files on disk keep their frontmatter, so discovery on every host is untouched.
Without this, engineering-discipline would have sat roughly 50 characters under the truncation cliff — shipping fine, then breaking on the next rule added.
Repo is now authoritative
ownedByUser() silently gives a personal ~/.claude/skills copy priority over the plugin's, so repo edits never took effect and the two copies drifted apart. New sync script makes the personal copies generated artifacts:
npm run sync # repo -> ~/.claude/skills (only names already present there)
npm run sync:check # exits 1 on driftRules merged, none lost
Every rule from both forks is now present. Rule inventory verified identical before and after the concision pass — response-discipline 45 normative items, engineering-discipline 59. The duplicated counterfactual rule was deduped: the method lives in engineering-discipline, and response-discipline references it.
response-discipline also gains a ban on hedged verdict openers (Partly., Sort of., Yes and no.) and subjectless counts. A flat Yes./No. answering a direct yes/no question stays allowed — the question names the subject.
Emitted payloads
| Skill | Chars | Headroom |
|---|---|---|
| response-discipline | 8,327 | 1,673 |
| engineering-discipline | 9,162 | 838 |
| task-registry | 3,053 | 6,947 |
Verified: 14/14 tests pass, claude plugin validate . passes, npm run sync:check exits 0, and a fresh session returns the final line of both skills intact with no frontmatter.