skill-tighten
skill-tighten audits SKILL.md files for instruction compliance by removing rationale prose, converting permissive language to imperatives, inserting STOP: gates on strict rules, and eliminating redundant repetition. Use this skill after writing or significantly modifying any skill, or when a user requests language cleanup, bloat reduction, or phrasing improvements. It operates independently and focuses exclusively on phrasing that causes agents to underweight or skip instructions at runtime, not on behavioral gaps.
git clone --depth 1 https://github.com/techygarg/lattice /tmp/skill-tighten && cp -r /tmp/skill-tighten/dev-skills/skill-tighten ~/.claude/skills/skill-tightenSKILL.md
# Skill Tighten
**Core responsibility:** Fix language that causes agents to skip or underweight instructions. Not behavioral gaps — that is `skill-review`'s job. Only phrasing: rationale prose, soft language, missing enforcement signals, redundant repetition.
**Input:** One or more of:
- A file path: `skills/atoms/clean-code/SKILL.md`
- A skill name: `clean-code` (resolves to the correct path automatically)
- A tier: `atoms` (tightens all skills in that tier)
- No argument: tightens all skills across all tiers
**Output:** Edited files + a report per skill:
```
## skill-tighten — {skill-name}
Lines: {before} → {after}
Changes:
1. {what changed} — {one-line reason}
2. ...
Result: TIGHTENED ({N} changes) | CLEAN (no changes needed)
```
**How to verify this skill did its job:**
- Every cut section had zero commands — only rationale
- Every softened phrase was "consider / think about / you may want to / it is recommended"
- Every added STOP: was on a hard rule that previously had no enforcement signal
- No rule, gate, checklist item, or branching logic was removed
- Re-running after edits returns CLEAN
---
## Step 1: Read the skill
Read the full SKILL.md. Also read all sibling files: `references/defaults.md`, `references/methodology-detail.md`, `assets/template.md`, or any file referenced by a `Read` instruction in the skill body.
Do not edit yet — complete the full audit first.
---
## Step 2: Apply the tighten checklist
For each item, scan the entire file. Mark every instance found — do not stop at the first.
### T1 — Non-actionable sections
Sections that explain why the skill exists, describe the problem, or narrate context without issuing a single command. Cut the entire section. Preserve the pointer to a referenced file if one exists.
Patterns that always qualify:
- Section titled "Core Principle", "Purpose", "Problem", "Background", "Why This Matters", "How It Is Used", "Integration with Other Skills"
- Opening paragraph before a numbered list that restates what the numbered list will do
- Closing paragraph after a gate that explains what happens if the gate were skipped
**Pass:** Section contains at least one imperative instruction (do, read, write, verify, check, apply, stop, flag).
**Fail:** Section contains only declarative statements, rationale, or scope commentary.
### T2 — Soft language
Words and phrases that agents treat as optional:
| Pattern | Replace with |
|---|---|
| `consider X` | `X` (imperative) or remove |
| `think about X` | remove |
| `you may want to X` | remove |
| `it is recommended to X` | `X` |
| `should` (as soft suggestion) | `must` or remove |
| `try to X` | `X` |
| `where possible, X` | `X` or remove |
**Pass:** Instruction is an imperative verb with no hedging qualifier.
**Fail:** Instruction contains any of the patterns above.
### T3 — Missing STOP: gates
Hard rules that must not be skipped — gates on advancing to next steps, checklist preambles, non-negotiable constraints — stated as bold prose without a `**STOP:**` prefix.
**Pass:** Hard gate reads `**STOP:**` as the first token of its line or sentence.
**Fail:** Hard gate is phrased as "Do NOT...", "Never...", "Always verify...", "Must not..." without the STOP: prefix.
Add `**STOP:**` prefix. Do not rewrite the instruction itself.
### T4 — Redundant repetition
The same point stated twice in different words. Keep the sharper version; cut the other.
Patterns:
- Section heading restated in the section's opening sentence
- Instruction followed by a sentence explaining what the instruction means
- Rationale sentence after a clear gate ("Without this, X would happen")
- Same rule in two adjacent bullets
**Pass:** Each statement appears once in its sharpest form.
**Fail:** Two sentences convey the same instruction or the same constraint.
### T5 — Table column bloat
Columns whose content explains why a trigger exists, rather than being the trigger.
Common offenders: columns titled "Why", "Reason", "Rationale", "Because", "Notes" in a table whose other columns already encode the actionable information.
**Pass:** Every column in the table is actionable — the agent does something with it.
**Fail:** A column contains only explanatory prose the agent reads but cannot act on.
Drop the column. Do not drop the row.
### T6 — Trailing rationale sentences
Sentences appended to a clear instruction that explain why the instruction exists. The instruction is already sufficient — the explanation adds tokens without adding compliance.
Patterns:
- "Without this, agents will X"
- "This ensures that X"
- "This is because X"
- "X is important because Y"
- Any sentence beginning with "This" that follows a complete imperative
**Pass:** Instruction ends at the action. No trailing explanation.
**Fail:** Instruction is followed by a sentence that begins with "This", "Without", "Because", or restates the consequence of not following the instruction.
---
## Step 3: Make edits
Apply all findings. Edits in order of checklist item (T1 first, T6 last) — structural cuts before phrasing fixes.
Rules:
- Cut sections entirely when T1 applies — do not rephrase them
- Add `**STOP:**` as a prefix — do not rewrite the surrounding instruction
- Do not remove checklist items, branching logic, gates, or output format specifications
- Do not restructure sections — targeted cuts and additions only
- If a T1 section contains one buried imperative, extract that line and discard the section wrapper
---
## Step 4: Report
After all edits:
```
## skill-tighten — {skill-name}
Lines: {before} → {after} ({delta})
Files changed: SKILL.md [, defaults.md, ...]
Changes:
1. [T1] Cut "{section name}" — no commands, pure rationale
2. [T3] Added STOP: to "{rule}" — was bold prose, now enforced gate
3. [T5] Dropped "Reason" column from {table name} — rationale, not instruction
...
Result: TIGHTENED ({N} changes)
```
If no changes needed:
```
Result: CLEAN — no language compliance issues found
```Audit and fix all Lattice documentation, README, docs/, GitHub issue templates, and CLAUDE.md to ensure they are fully aligned with the current skill inventory. Documentation drift is the most common source of user confusion in Lattice — a skill exists in the codebase but not in the docs, or a renamed skill leaves a stale reference in the bug report template. If you've made any change to skills/ and haven't run this, run it now. Use when the user says 'align docs', 'audit docs', 'update documentation', 'skill align', 'check docs are in sync', 'audit skill inventory', 'ensure docs are aligned', 'are the docs up to date', or 'what needs updating'. Standalone — does not call other skills.
Create a new Lattice skill — atom, molecule, or refiner — following all framework conventions. Writing skill files manually almost always produces convention violations: wrong section order, missing confirmation gates, defaults.md without the right structure. This skill knows all of that and guides you through it. Use whenever adding any new atom, molecule, or refiner to Lattice, or when the user says 'create a new skill', 'add an atom', 'add a molecule', 'add a refiner', 'build X for Lattice', 'new lattice skill', or 'skill forge'. Does not validate, align docs, or deploy — those are separate skills you run after.
Deep behavioral audit of a Lattice skill — proposes 3 review personas relevant to the skill, runs independent scenario analysis from each persona's perspective, then merges only the high-confidence, practical findings into a severity-ordered gap report with proposed fixes. Structural validation (conventions, cross-references) is skill-validate's job — this skill finds gaps that would realistically surface when someone actually uses the skill: missing scenario handling, ambiguous instructions, silent failure cases, and behavioral inconsistencies. Filters out theoretical edge cases, low-likelihood speculation, and findings owned by other skills. Use after writing or significantly changing any skill, or when the user says 'review this skill', 'deep review', 'does this skill work', 'find gaps in this skill', 'stress test this skill', 'review from different angles', or 'skill review'. Standalone — does not call other skills.
Validate any Lattice SKILL.md against all tier conventions — atoms, molecules, and refiners. Catches structural errors, broken cross-references, and convention violations before they reach the repo. If you just wrote or modified a Lattice skill file and haven't run this yet, run it now — manual review consistently misses the same categories of errors this skill is specifically designed to catch. Use when the user says 'validate this skill', 'check this skill', 'does this follow conventions', 'review this skill file', 'check my SKILL.md', or 'skill validate'. Reports PASS/FAIL with specific file-and-section findings and actionable fixes. Standalone — does not call other skills.
Architectural thinking partner for an existing repository — scans the codebase, conducts a structured interview, agrees on current architectural state and recommended direction, and produces a shareable insights document. Scoped to one repository, module, or folder. Does not execute transformation — it orients. Use when the user says 'assess my codebase architecture', 'what direction should my codebase go', 'architecture compass', 'understand my architecture', 'audit architecture drift', 'architectural assessment', or 'help me understand what is wrong with my codebase'.
Facilitate a structured conversation to define architecture principles for a repository. Supports multiple architecture styles: clean architecture (default), hexagonal / ports & adapters, modular monolith, or custom. Produces a formal architecture document that the corresponding atom will use. Use when setting up a new project, defining architecture standards, or when the user says 'setup architecture', 'define layers', 'architecture principles', 'help me define my architecture', 'hexagonal architecture', 'modular monolith', 'ports and adapters', or 'define my architecture style'.
Enforce architectural rules when generating or modifying code. Defaults to clean architecture; supports any architecture style via the architecture-refiner. Validates layer responsibilities, dependency direction, and structural constraints using the loaded architecture rules. Use when generating code, reviewing architecture, creating new files, or when the user mentions 'architecture', 'layers', 'structure', 'dependency rules', 'hexagonal architecture', 'ports and adapters', 'modular monolith', or 'onion architecture'. Also use when reviewing generated code for structural compliance.
Investigate, reproduce, and safely fix a bug with regression protection. Composes context, diagnosis, architecture, code quality, and testing guardrails into a reproduce-first repair workflow. Use when the user says 'fix this bug', 'debug this', 'investigate this failure', 'patch this regression', 'repair this issue', or 'why is this broken'.