Skip to content

haze-dev1/eigi-stack

v0.6.0MIT

understand before changing, follow the Eigi standards, delete more than you add, prove it securely, verify it against the running stack, write it plainly.

eigi-stack

A bundled set of skills for Eigi work: understand the code before changing it, follow the repo's backend/frontend standards, delete more than you add, prove it securely, verify it against the running stack, and write it down plainly.

Layout

eigi-stack/
├── plugin.json                  manifest (name, version, skill list)
├── .eigi-stack-provenance.json  per-skill source and copy date
└── skills/
    ├── how/ why/ architect/ figure-it-out/ in-your-own-words/
    ├── unslop/ technical-writing/
    ├── eigi-backend-standards/ eigi-frontend-standards/ eigi-review/ eigi-scope-discipline/
    ├── ponytail/ ponytail-review/
    ├── eigi-security-review/ eigi-security-fixes/
    ├── grilling/ grill-me/
    └── eigi-test/

18 skills, 74 files, 480 KB. Each is a folder with SKILL.md plus any references/ or scripts/ it ships. Frontmatter across all 18 costs about 1,700 tokens per turn once installed; bodies load only when a skill is invoked.

Understanding before changing

SkillBrief
howExplores a subsystem and explains architecture, runtime flow, and ownership/layering. Use before changing something you don't yet model. Its teaching mode turns the same exploration into one plain explanation for a person, pulling reasons from why.
whyDigs out design rationale from git, issues, docs, chat, logs, and analytics in parallel; returns a cited read on decisions and tradeoffs.
architectSketches types, signatures, and module boundaries with not implemented bodies before code.
figure-it-outAuditable playbook for large ambiguous work: hypothesis loop, decision log, rigor scaled to the task.
in-your-own-wordsRestates the goal it thinks you stated, so a misread surfaces before any work happens.
grillingRelentless interview about a plan, decision, or design: maps it as a design tree, asks the whole frontier in numbered rounds with a recommended answer each, and doesn't act until the tree is empty and you agree.
grill-meSeven-line alias that just calls grilling. Kept so the phrase "grill me" resolves; it needs grilling beside it to do anything.

Eigi standards

SkillBrief
eigi-backend-standardsFastAPI/MongoDB layering, folder placement, docstrings, logging, schemas, models. Self-contained: ships its own folder template and examples.
eigi-frontend-standardsFolder structure, component boundaries, API clients, styling, state, env handling, tests for frontend apps.
eigi-reviewCritical review in the Eigi lead reviewer's style, in two modes: a pre-merge diff review (default) or a whole-project audit. Derives the project's contract first, so the same skill reviews any stack.
eigi-scope-disciplineKeeps plans and code scoped to the requirement; every addition beyond it gets tagged and listed for approval.

Less code

SkillBrief
ponytailForces the laziest solution that works: YAGNI first, stdlib before custom code, native features before dependencies. Levels: lite, full, ultra.
ponytail-reviewReview focused only on over-engineering — what to delete, what replaces it.

Security

SkillBrief
eigi-security-reviewOne pass: threat-model the change for broken access control and tenant isolation, walk an OWASP/CWE checklist over every changed file, load the pattern catalogue for what the code actually does, run whichever scanners are installed, and end with a severity-ranked fix list plus BLOCK or PROCEED WITH NOTES. Diff by default, whole-system pre-launch.
eigi-security-fixesWorks that list one finding at a time: fix in isolation, fix siblings of the same pattern, run the finding's verify-after check, then re-check the diff against four criteria and stop on a partial fix.

Verification

SkillBrief
eigi-testOne QA pass on seven fronts — static gates, unit suites, live-database tests, a structure/quality audit, an edge-case matrix, live API probes with log checks, and a browser pass delegated to a small model — ending in one evidence report. Derives the project's profile before running, ships the LRN profile. Reports, never fixes.

Writing

SkillBrief
unslopCuts AI tells: vocabulary, filler, hedging, formatting tics.
technical-writingLayered standard: Diátaxis structure, Google developer style, STE instruction rules, Global English.

Gaps

The pstack skills (architect, figure-it-out, why, technical-writing) used to name pstack skills and Cursor settings this stack does not ship. Those references were rewritten to point at what is here; see Modified.

Paths that assume an install location

Every skill here is a folder that can sit anywhere. One still assumes a path:

SkillAssumptionEffect when installed elsewhere
eigi-testreferences/lrn.md defaults SKILL_DIR to ~/.claude/skills/eigi-testworks, but point SKILL_DIR at the real folder so the audit script resolves

eigi-security-review Step 0 expects the project's own security rules (AGENTS.md section, security-rules.md, docs/SECURITY-DATA-FLOW.md) and says so when they are absent. LRN keeps a rules file at .codex/skills/security-rules.md; it is not bundled here.

The pattern catalogue under eigi-security-review/references/catalog/ ships seventeen topic guides but only three language or infrastructure guides: Python, JavaScript, Docker. Upstream also promised Go, Rust, Java, Kubernetes, Terraform, CI pipeline, and cloud guides; they were never written. The skill says so in Step 4 and reasons from the closest guide instead of implying coverage.

~/.claude/skills/ also holds grill-with-docs, a second alias that calls grilling plus domain-modeling. It is not bundled because domain-modeling isn't: copy both if you want ADR-and-glossary capture during an interview.

Modified

SkillSourceChange
eigi-testarena .claude/skills/lrn-test, 106 linesRewritten as eigi-test: step 0 resolves a six-line project profile (stack, commands, services, accounts, journeys, spec) before anything runs, the seven fronts and the evidence rules are unchanged, and every LRN specific — ports, commands, seed script, tracker paths, roles, lrn_access_token — moved into the LRN profile section and references/lrn.md. Hardcoded .claude/skills/lrn-test/ paths replaced with <this-skill-dir> / SKILL_DIR.
eigi-security-reviewreview-app-security (SKILL + 6 references), security-gate (strictness rules, scanner table, verdict), security-review (17 topic guides, 2 language guides, Docker)Merged four skills into one. The review passes now run as steps 0–8 of a single flow: scanners and the input-to-sink trace sit before triage, the catalogue is demoted to references/catalog/ and loaded by what the code touches, and the two output contracts become one, ending in BLOCK / PROCEED WITH NOTES. Dropped the duplicated METHODOLOGY.md single-file copy and both per-skill READMEs. Fixed: the hardcoded .claude/skills/ probe that printed a permanent "degraded" banner, and the seven catalogue guides that were never written (now stated in Step 4). Added a data-layer note: the RLS advice is Postgres-shaped, so on MongoDB the check is the tenant id in every filter and no $ne/$where/$expr from a request body.
eigi-security-fixesapply-security-fixes, 96 linesNow the only place fix verification lives: the four criteria and fixed / partial / regressed moved in from the review, so the old cross-skill "run fix-verification mode" call is gone. Re-verification runs against the diff the fix produced.
howpstack how, 36 linesTeaching mode folded in from teach (21 lines) and the dead pstack-models.mdc / poteto-mode spawn paragraph replaced with what a read-only subagent actually is. teach was pure composition over how + why.
eigi-backend-standardsEigi/lrn/.codex/skills/, 109 linesDe-referenced. It named agent-360/backend/vaani_core as the canonical implementation, a path that does not exist anywhere on this machine, so every "go and read the reference" instruction dead-ended. The rules, the folder template, and references/examples.md now stand on their own.
architectpstack architectPhase B no longer runs arena: it produces two or more candidates itself, or one subagent each on the default model, and records the synthesis in the rationale. Phase C now always stops for sign-off. interrogate became grilling; the pstack-models.mdc runner slugs and every "per the X principle skill" pointer were dropped with the rules kept, here and in references/runner-prompt.md and references/rationale-template.md.
figure-it-outpstack figure-it-outDropped the read-poteto-mode first step and every principle-skill pointer, keeping each rule. Phase A now waits for a go-ahead. arena and laziness-protocol became architect and ponytail; show-me-your-work became a decision log kept in the plan file.
whypstack whyReplaced the pstack-models.mdc slugs, the poteto-mode subagent pointer, and the Cursor generalPurpose / mcps/ instructions with the default model and the MCP tools available in the session.
technical-writingpstack technical-writing"swarm logs" became "agent logs".
eigi-reviewProjects/review/skills/eigi-review, 222 linesRewritten to 265 lines. Two modes: diff (default, unchanged job) and project (whole-tree audit, risk-ordered, with a coverage map). Scope is now derived rather than assumed: step 1 assembles a five-line contract from standards skills, repo docs, and CI config, so the lenses work on any stack. Eigi's conventions survive intact as the Eigi profile section, which also carries the Overrides. Diverged from upstream — do not replace with a fresh copy.

Sources

SkillsCopied from
how why architect figure-it-out technical-writing (all modified) in-your-own-words unslopcursor/plugins → pstack/skills/ at d1453c1
eigi-backend-standards eigi-frontend-standardsEigi/lrn/.codex/skills/
eigi-review (modified — see above)Projects/review/skills/eigi-review
eigi-scope-discipline ponytail ponytail-review grilling grill-me~/.claude/skills/
eigi-security-review (merged) eigi-security-fixes (merged)review-app-security + security-gate + security-review from this arena and ~/.claude/skills/; apply-security-fixes from this arena
lrn-test (now eigi-test, modified)this arena's .claude/skills/

Required docs

The three profile-driven skills — eigi-review, eigi-test, eigi-security-review — read the project before they act. This is the tree they expect. Every entry is optional on its own: a missing doc costs that line of the profile and the skill says so, rather than inventing one.

DocAnswersRead by
AGENTS.mdhouse rules, layering, the commands to run, and a ## Security rules sectionall three
CLAUDE.md, README.md, CHANGELOG.mdcontext, history, whatever AGENTS.md leaves outreview
docs/product.mdwhy the product exists, who it serves, what a user and a tenant arereview, test
docs/userflow.mdthe journeys a browser pass reproducesreview, test
docs/ADR.mddecisions that must not be silently reversedreview, test
docs/specs/*.mdwhat one feature must do, its acceptance criteria, its deferral notesreview, test
docs/plans/implementation-plan.mddurable invariants, architecture, and the protocol for recording evidencereview, test
docs/tracker/progress.json, docs/tracker/features/*.jsonwhere each feature stands todaytest
docs/edgecases/*.jsonpayloads to replay in the edge-case matrixtest
docs/review/where the report is written, and where prior reports livetest, security
docs/SECURITY-DATA-FLOW.md (or root SECURITY-DATA-FLOW.md, docs/data-flow.md)trust boundaries, what crosses themsecurity
docs/security-rules.md (or the AGENTS.md section)the invariants security is checked againstsecurity
pyproject.toml / package.json, CI workflowthe commands the project actually runsall three

docs/architecture.md and docs/known-gaps.md are deliberately not part of this set. The code is the architecture, and the tree can be read directly; deferral status belongs in each spec's own note and in the tracker, where it stays next to the thing it defers.

Using it

Nothing here loads automatically. To make these active, either copy the folders into a project's .claude/skills/, or open eigi-stack/ as its own project.

Both eigi-test and eigi-review resolve a project profile before acting, and both read it from the same place: AGENTS.md plus the docs tree in Required docs. A project without that tree gets a smaller profile, and the skill says which lines it could not fill.