lumin-repo-lens-canon
Maintainer-only canon surface for Lumin Repo Lens/lumin-repo-lens: draft or check promoted repository facts, canonical drift,β¦
Use before/after TS/JS code changes: add, edit, move, rename, refactor, make a helper/type/file/function, or ask if something already exists. Infer intent from plain language, run pre-write reuse screening, then post-write delta checks.
Claude Code
$ npx -y skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate --agent claude-code
Codex
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a codex -y
Cursor
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a cursor -y
Gemini CLI
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a gemini-cli -y
GitHub Copilot
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a github-copilot -y
OpenCode
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a opencode -y
Windsurf
$ npx skills add annyeong844/lumin-repo-lens --skill lumin-repo-lens-write-gate -a windsurf -y
name: lumin-repo-lens-write-gate description: "Use before/after TS/JS code changes: add, edit, move, rename, refactor, make a helper/type/file/function, or ask if something already exists. Infer intent from plain language, run pre-write reuse screening, then post-write delta checks."
This is the code-change transaction surface for lumin-repo-lens. It owns `pre-write` and `post-write` together because `post-write` reads the `pre-write-advisory.<invocationId>.json` produced by the same change.
Keep the human-facing answer short and kind. The assistant reads the cold artifacts; the human gets the next concrete step.
NO STRUCTURAL CLAIM WITHOUT MACHINE EVIDENCE NO ABSENCE CLAIM WITHOUT STATED SCAN RANGE
Use hedging like "looks like" only when the internal label is `degraded` or `unknown`.
The shared engine lives in the sibling audit skill:
node ${CLAUDE_PLUGIN_ROOT}/skills/lumin-repo-lens/scripts/audit-repo.mjsIn a maintainer checkout, the equivalent command is:
node audit-repo.mjs
Slash commands still read `<SKILL_ROOT>/references/command-routing.md` from the shared audit skill for exact flag routing. Below, `<SKILL_ROOT>` means `${CLAUDE_PLUGIN_ROOT}/skills/lumin-repo-lens` in plugin installs, or the repo root in a maintainer checkout.
Below, `<audit-repo>` means whichever of the two commands above applies to the current context.
This surface owns `/lumin-repo-lens:pre-write` and `/lumin-repo-lens:post-write`.
slash-command routing.
repairing intent JSON.
domain-cluster hints, exact shape lookup, and advisory language.
contaminated reuse demotion, and post-write escape deltas.
artifact names matter.
`<SKILL_ROOT>/references/false-positive-index.md` when advisory output surfaces FP/tier terms that need explanation. The long FP case ledger is maintainer-only; do not load it for ordinary pre-write/post-write.
Run before adding, implementing, refactoring, moving, renaming, or extending code when a compact intent can be inferred.
Do not ask normal chat users to hand-write JSON. Infer the smallest intent you can from the request, stream it via `--intent -` or write a temporary intent file, then run:
<audit-repo> --pre-write --root <repo> --output <dir> --intent <file|->
Read the invocation-specific advisory path printed by pre-write before coding during the same uninterrupted change transaction. It is also recorded as `artifactPaths.invocationSpecific` in the advisory JSON and as `manifest.preWrite.advisoryPath` when run through the orchestrator. `pre-write-advisory.latest.json` is only a convenience pointer; use the explicit `pre-write-advisory.<invocationId>.json` path for post-write across session or task boundaries.
Planned file paths may be grounded `NEW_FILE` and still carry `DOMAIN_CLUSTER_DETECTED` when the same directory already has a matching prefix, suffix, or domain-token family. Treat that as a reuse/review hint before creating a new owner file.
P4 shape lookup is exact. Prefer `shape.typeLiteral` or `shape.hash` in the intent when asking for shape reuse. Field-name-only shapes are reported as `unknown`, not fuzzy matches.
Report existing owners/helpers/types/dependencies in plain language, with compact proof only when needed.
Run after the same change when a pre-write advisory exists:
<audit-repo> --post-write --root <repo> --output <dir> --pre-write-advisory <advisory>
Check:
If post-write cannot find the advisory, say that the post-write check is `unknown` and name the missing file. Do not invent a clean result. Do not use `pre-write-advisory.latest.json` after another pre-write run has happened; rerun pre-write or pass the invocation-specific advisory.
Use four short blocks when reporting to a human:
1. What I checked 2. What already exists / changed 3. What needs attention 4. Next command or coding-agent prompt
Keep raw JSON paths, FP ids, and tier names behind the answer unless the user asks for proof or maintainer detail.
If the user shifts to repo-wide structure, dead code, cycles, or a refactor-plan, hand off to `lumin-repo-lens`. If the user shifts to canonical draft or drift validation, hand off to `lumin-repo-lens-canon`.
π°π· νκ΅μ΄λ‘ μ½μΌμλ €λ©΄ β README.ko.md Β· π¬π§ English continues below. The kind little buddy that says "this already exists" before you write it again. Your repo's companion for vibe-coding sessions.
Maintainer-only canon surface for Lumin Repo Lens/lumin-repo-lens: draft or check promoted repository facts, canonical drift,β¦
Audit TypeScript/JavaScript repos for structural debt with machine evidence: dead exports, cycles, oversized modules, duplicateβ¦
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, orβ¦
Ask which skill or flow fits your situation. A router over the skills in this repo.