Skills, instructions, contracts, hooks, prompts, and a pack-based CLI for coding assistants
Every project needs the same coding-assistant setup: language-specific instructions, review workflows, testing conventions, and security guardrails. Instead of copying files between repositories or tying shared content to one assistant, install once and materialize it for the selected targets.
What you get:
- Pack-based project installs with
geremmyas.yml, so each repository gets only the instructions and skills it needs - Instruction files auto-applied by file glob for languages, frameworks, testing, and security
- AGENTS.md project contract for agent workflows, artifact locations, and operating rules
- Guardrails Framework with phase-local skills, lazy references, authority boundaries, and executable command hooks
- Dynamic delegation contracts for isolated review or specialist work, without permanent agent personas
- Workflow and utility skills for specs, tests, docs, migrations, ADRs, state management patterns, and commit messages
- Command guardrails that block
git push --force,rm -rf /,terraform destroy, and other dangerous commands - Prompt templates for code review, refactoring, test generation, and the technology-neutral base workflow
| Document | Description |
|---|---|
| docs/architecture.md | Embed FS, pack resolution, sync preserve/overwrite, global vs project |
| docs/creating-packs.md | How to add packs, skills, and instructions |
| docs/guardrails-framework.md | Error-prevention system: gates, decisions, anti-patterns, quality workflows |
| CONTRIBUTING.md | Setup, conventions, and PR flow |
| AGENTS.md | Agent operating contract for synced projects |
This maintainer repo also uses specs/README.md for platform
features. Shared sources live under content/; assistant-specific adapters
live under targets/. Root files and selected .github paths are symlinks used
for dogfooding. Do not run geremmyas project here.
geremmyas/
├── install.sh / uninstall.sh # Install scripts
├── catalog/packs.json # Semantic artifact catalog
├── content/ # Assistant-neutral canonical sources
│ ├── AGENTS.md # Project operating contract
│ ├── instructions/ # Language and framework guidance
│ ├── skills/ # Workflow and utility skills
│ ├── guardrails/ # Portable command policy
│ ├── prompts/ # Review, refactor, test, and base prompts
│ └── templates/ # Project artifact templates
└── targets/
└── copilot/ # Copilot-only instructions and hooks
Global install (`geremmyas global [--targets ...] <pack>...`):
→ ~/.agents/skills/ (targets with portable skills)
→ ~/.copilot/instructions/ (copilot target)
→ ~/.codex/instructions/ (codex target)
→ ~/.cursor/rules/ (cursor target)
→ ~/.claude/CLAUDE.md (claude-code target)
→ ~/.config/opencode/AGENTS.md (opencode target)
Install or update the geremmyas binary:
curl -fsSL https://raw.githubusercontent.com/woliveiras/geremmyas/main/install.sh | bashThe installer downloads the latest release binary to ~/.local/bin/geremmyas.
When run from a local checkout, it can also build the binary with Go if a release
asset is not available yet.
Use XDG_BIN_HOME to choose another install directory:
curl -fsSL https://raw.githubusercontent.com/woliveiras/geremmyas/main/install.sh | XDG_BIN_HOME="$HOME/bin" bashFrom a local checkout, use GEREMMYAS_INSTALL_SOURCE=checkout to build from source:
XDG_BIN_HOME="$HOME/bin" ./install.shRun the same installer again:
curl -fsSL https://raw.githubusercontent.com/woliveiras/geremmyas/main/install.sh | bashOr from a local checkout:
./install.sh updateRemove the binary:
curl -fsSL https://raw.githubusercontent.com/woliveiras/geremmyas/main/install.sh | bash -s -- uninstallOr from a local checkout:
./install.sh uninstallgeremmyas init # creates geremmyas.yml (default: core, coding)
geremmyas sync # install packs from config into cwd
geremmyas list # all catalog packs
geremmyas version # installed binary version
geremmyas doctor # validate embed + configExample geremmyas.yml:
version: 1
packs:
- core
- coding
- python-api
- data-postgres
targets:
- copilot
- cursor
- claude-codeDefault targets when omitted: copilot only. Add cursor, claude-code, or
opencode to generate IDE-specific files from the same packs (see
docs/architecture.md).
Optional writing, research, and demo packs:
| Pack | Use when |
|---|---|
blog |
Reviewing and rewriting technical blog posts while preserving the author's voice |
premortem |
Stress-testing plans, decisions, and launches by assuming failure and working backward |
research |
Writing, reviewing, and planning scientific papers, SLRs, peer reviews, and empirical case studies |
Add them to a repository:
geremmyas add blog research
geremmyas syncI strongly recommend installing JuliusBrussee/caveman.
curl -fsSL https://raw.githubusercontent.com/JuliusBrussee/caveman/main/install.sh | bashSee JuliusBrussee/caveman for details.
| Command | Purpose |
|---|---|
version |
Print the installed Geremmyas binary version |
list |
Print all packs (name + description) |
init [--packs a,b] [--targets copilot,cursor,...] [--force] |
Create geremmyas.yml; interactive TUI if no --packs and TTY |
sync [--force] [--targets ...] |
Sync packs + run IDE generators from config |
add <pack>... |
Append packs to config only (does not sync) |
remove <pack>... |
Remove packs from config only (does not delete synced files) |
project [--force] [--targets ...] <pack>... |
add + sync in one step; interactive pack picker available |
global [--targets ...] [--force] <pack>... |
Reconcile the complete user-level pack/target state |
global list [--targets ...] [--include-adoptable] [--json] |
Inspect managed and observed global harness state without writing |
global clear [--targets ...] [--include-adoptable] [--dry-run] [--force] [--json] |
Plan or safely remove global state owned by Geremmyas |
context [--root path] [--json] |
Report approximate context cost, selected packs, and skill ownership by source |
doctor |
Validate catalog sources and local geremmyas.yml |
Defaults: non-interactive init writes core and coding.
The default remains complete through compact fallbacks in AGENTS.md: its
Completion and Agent Routing sections cover fresh evidence, bounded review,
minimal docs reconciliation, and local commits without requiring another
discoverable skill. Add quality (or choose base) when you want the detailed
verify, review-contract, docs, and git-commit procedures available lazily.
Sync output: installed, updated, preserved, skipped — see
docs/architecture.md.
Project sync reconciles files through .geremmyas/project-manifest.json.
Modified, unowned, and symlinked paths are preserved; obsolete files are
removed only when they remain unchanged and owned.
Global inventory distinguishes current, modified, missing, obsolete, unowned, symlinked, non-regular, unreadable, and adoptable files. Adoption requires an exact canonical hash or a trusted Geremmyas generated marker; external plugin and runtime caches are observations only and never become owned.
global clear --dry-run renders the same removal plan without changing files or
the manifest. A target-scoped clear retains shared skills while another target
still uses them. Modified owned files require --force; symlinks, non-regular
paths, unowned files, plugins, and runtime caches are never removed. Use
--include-adoptable only for a total clear of exact canonical legacy files.
Marker-only generated legacy files additionally require --force, because the
marker cannot prove that the generated body was never customized.
Generated IDE files (marker geremmyas:generated): .cursor/rules/*.mdc,
.cursor/hooks.json, CLAUDE.md, .opencode/AGENTS.md, .codex/AGENTS.md. Re-sync
updates them; custom edits preserved unless --force.
Global install routes semantic artifacts by target. Portable skills use
~/.agents/skills/; Copilot and Codex instructions are written only when their
respective targets are selected.
Use geremmyas add <pack> then geremmyas sync, or use project to do both.
Install packs into the current project and update geremmyas.yml in one step:
geremmyas project python-api data-postgresOr use interactive selection:
geremmyas projectgeremmyas project preserves customizable project files by default, including
AGENTS.md, specs/README.md, mise.toml, .github/copilot-instructions.md,
and guardrail hooks. Use --force to overwrite those files during sync:
geremmyas project --force coreInstall packs to user-level directories so they apply across all projects:
geremmyas global base python-ai infra-terraform blog research
geremmyas global --targets copilot,cursor base
geremmyas global --targets claude-code,opencode coding
geremmyas global --targets codex coding python-aiEach invocation is the complete desired global state, not an additive install.
Geremmyas records owned files in
${XDG_STATE_HOME:-~/.local/state}/geremmyas/global-manifest.json. When packs or
targets are removed, unchanged owned files are deleted; modified and unowned
files are preserved. The first managed run adopts only files whose content
exactly matches the current embedded catalog, so unknown legacy and third-party
skills are never removed automatically.
Inspect the current state without changing files or the manifest:
geremmyas global list
geremmyas global list --targets codex
geremmyas global list --include-adoptable
geremmyas global list --jsonThe inventory distinguishes current, modified, missing, obsolete, unowned,
symlinked, non-regular, unreadable, and adoptable paths. System skills and
plugin caches are reported as external observations, never as Geremmyas-owned
files. --targets filters the report only; it does not change installed state.
Preview or apply conservative cleanup:
geremmyas global clear --dry-run
geremmyas global clear --targets codex --dry-run
geremmyas global clearOr use interactive selection:
geremmyas globalDefault target is copilot for backward compatibility. With --targets:
| Target | Output |
|---|---|
copilot |
~/.agents/skills/, ~/.copilot/instructions/ |
cursor |
above skills + ~/.cursor/rules/, ~/.cursor/hooks.json |
claude-code |
~/.claude/CLAUDE.md |
opencode |
~/.config/opencode/AGENTS.md |
codex |
~/.codex/AGENTS.md + ~/.codex/instructions/ (instruction index) |
Instructions are routed only to the selected assistants: Copilot uses
~/.copilot/instructions/, while Codex uses ~/.codex/instructions/. Codex
also reads ~/.codex/AGENTS.md (its CODEX_HOME), which indexes each
instruction by applyTo.
The file is a compact bootstrap: it defers to the nearest project AGENTS.md
and does not duplicate Codex's native skill discovery or unsupported agent
roles.
Earlier versions wrote ~/.config/codex/AGENTS.md; delete that stale file once
after upgrading.
After upgrading from an append-only global install, run geremmyas global list --include-adoptable first, then reconcile with the complete pack and target set
you want. The migration catalog recognizes exact hashes of the renamed workflow
skills and removed agent profiles; modified legacy files remain unowned or
preserved. Former top-level policy skills now live under their owning workflows
as listed in Guardrails Framework.
Generated global files preserve user edits unless you pass --force. A corrupt
or unsupported manifest blocks the run before any global files are written;
move the manifest aside only after reviewing the installed global directories.
Run geremmyas context to compare the embedded catalog, Copilot and portable
project roots, ~/.agents/skills, Codex system skills, and Codex plugin cache.
The report shows the project/global manifest selections and separates top-level
and nested SKILL.md files, frontmatter bytes, approximate tokens, and
ownership. Use --root to inspect another project without changing directory
and --json for repeatable baseline comparisons, including per-skill body and
support-file costs. Human output shows coding, quality, and base upper
bounds: discovery metadata, all selected top-level bodies, and support content
that should load only on demand. Token counts use (bytes + 3) / 4; they are a
stable comparison metric, not an exact model tokenizer result.
context measures installed/discoverable text, not what a host actually loaded,
when it compacted, model token billing, or wall-clock latency. Measure those
runtime effects with an external controlled A/B: same assistant/version/model,
repository snapshot, prompt suite, cache state, and repetitions; compare an
isolated empty home with project coding, project base, and an explicit
global installation. Record median and tail latency plus runtime-reported input,
cache, tool, and compaction events. Geremmyas deliberately does not call an LLM.
External system and plugin roots are observed only. unowned means Geremmyas
has no authority to remove that skill; modified means a manifest-owned global
skill no longer matches the hash Geremmyas installed. Plugin-cache counts are an
upper bound that can include inactive or older versions; the Codex host decides
which cached plugins are active in a session.
This release intentionally makes a clean break instead of installing aliases:
| Previous capability | Replacement |
|---|---|
sdd pack |
coding for the efficient default, or base for coding + closing workflows |
requirements-interview |
refine |
generate-spec |
spec |
vertical-tdd |
tdd |
bugfix-loop |
bugfix |
verification-checklists |
verify |
update-docs, generate-glossary, generate-adr |
docs, selecting one lazy mode reference |
code-review-requesting |
verify/references/review-contract.md, used by a runtime-created subagent |
| bundled custom agents | bounded dynamic subagents created only when useful |
There are no compatibility skill directories because they would restore discovery cost and ambiguous triggers. Project/global reconciliation removes manifest-owned old paths that still match their installed hash. The embedded migration hash catalog also recognizes intact pre-manifest portable skills and agents; modified or unknown files remain untouched. Inspect global state before cleanup:
geremmyas global list --include-adoptable
geremmyas global clear --dry-run --include-adoptableRun geremmyas list for the live list. Dependencies are resolved automatically
(for example supabase pulls in data-postgres).
| Group | Packs | Notes |
|---|---|---|
| Baseline | core, coding, quality, base |
Default: core + coding with compact closing fallbacks; base adds detailed quality workflows |
| Workflow helpers | decision-support, skill-maintenance |
Optional decision and catalog-maintainer skills |
| Writing & research | blog, research, premortem |
Optional content workflows |
| Games | game-core, game-ui, game-systems, game-performance, game-audio, game-art, game-delivery, game-dev |
Select routine 2D domains independently; game-dev is the explicit complete metapack |
| TypeScript / Node | typescript-base, typescript-ci, node-api, nestjs, fastify |
nestjs / fastify need node-api |
| React | react-web, react-router, react-state, react-data, tailwind |
Most depend on react-web → typescript-base |
| Python | python-base, python-api, python-ai, python-ci, python-sqlite |
python-ci needs infra-ci |
| Go | go-base, go-api, go-sqlite, go-devtools, go-ci |
go-sqlite needs data-sqlite |
| Rust | rust-base, rust-ci, rust-release |
|
| Data | data-postgres, data-sqlite, data-chromadb, supabase, node-sqlite |
supabase depends on data-postgres |
| Infra | infra-docker, infra-ci, infra-gcp, infra-terraform |
|
| Mobile | android, android-ci |
|
| Other | astro |
Astro/MDX instructions |
Packs only install what you list in geremmyas.yml (plus transitive depends).
There is no automatic detection of package.json or go.mod in the target repo.
For a game project, prefer the smallest stable domain set instead of installing
game-dev automatically. For example, a gameplay-heavy Phaser project can use:
packs:
- base
- typescript-base
- game-core
- game-ui
- game-systemsAdd game-performance, game-audio, game-art, or game-delivery when those
domains become active. game-dev depends on every focused game pack and remains
available when advertising all eleven skills is an intentional trade-off.
game-art-2d remains a backward-compatible pack name for game-art; it does
not create a duplicate skill. Smaller packs reduce the discovery surface, but
actual skill activation still depends on the assistant runtime.
You can also choose project vs global during interactive init:
geremmyas initEvery project sync includes a mise.toml template for consistent tool versions.
After sync, activate it:
mise trust
mise installThis ensures all contributors use the same Go, Node, Python (or whatever tools the project needs) versions without manual setup.
Portable prompt source templates live in content/prompts/. They are canonical
examples, not catalog artifacts: geremmyas sync and geremmyas global do not
install them. Copy one into an assistant's native prompt location deliberately
when that target supports custom prompts. Assistant-specific bootstrap and
instruction templates live under targets/<assistant>/.
| File | Purpose |
|---|---|
targets/copilot/global-instructions.md |
Copilot bootstrap: find and follow local AGENTS.md |
content/prompts/review.prompt.md |
Structured code review checklist |
content/prompts/refactor.prompt.md |
Refactor preserving behavior |
content/prompts/test.prompt.md |
Generate unit tests matching project patterns |
content/prompts/base.prompt.md |
Full technology-neutral cycle: refine -> spec -> test -> implement -> verify -> review -> docs |
The selected targets determine output paths. Shared artifacts remain at the project root; assistant-specific content is emitted only for that target.
| Target | Principal outputs |
|---|---|
| Shared | AGENTS.md, mise.toml, project templates |
| Copilot | .github/skills, .github/instructions, .github/hooks |
| Codex | .agents/skills, .codex/instructions, .codex/AGENTS.md |
| Cursor | .agents/skills, .cursor/rules, .cursor/hooks.json |
| Claude Code | .agents/skills, .claude/instructions, CLAUDE.md |
| OpenCode | .agents/skills, .opencode/instructions, .opencode/AGENTS.md |
AGENTS.md is the source of truth for agent behavior in a repository. It should
reference skills instead of duplicating their full procedures.
.github/copilot-instructions.md remains useful for project facts and
Copilot-wide context.
Instructions are short, auto-applied rules selected by applyTo globs. Use them
for conventions that should be present whenever an assistant edits a matching
file. Target planners place the same source in the assistant's native
destination. Use skills for explicit workflows, and assets/ or references/
for long examples and recipes.
geremmyas lint protects the default context budget: descriptions are limited
to 240 characters, skill bodies to 250 lines, the composed base workflow to 7 public
skills, and content/AGENTS.md to 700 words. Nested support files must use
descriptive names instead of SKILL.md. See
Creating packs, skills, and instructions.
| File | Applies To | Focus |
|---|---|---|
typescript.instructions.md |
**/*.ts, **/*.tsx |
Strict mode, interfaces, named exports |
nestjs.instructions.md |
NestJS modules, controllers, providers, and lifecycle files | Modules, DI, DTO validation, guards, interceptors, filters |
fastify.instructions.md |
Fastify routes, plugins, and server files | Plugins, JSON Schema contracts, hooks, logging, errors |
node-sqlite.instructions.md |
Node SQLite database/repository files | node:sqlite, better-sqlite3, prepared statements, transactions |
go.instructions.md |
**/*.go |
Error wrapping, table-driven tests, context |
echo.instructions.md |
Echo handlers, routes, middleware, and server files | Handlers, middleware, context, centralized errors, graceful shutdown |
go-sqlite.instructions.md |
Go SQLite database/repository files | database/sql, modernc.org/sqlite, DSN pragmas, connection limits |
go-embed.instructions.md |
Go files in projects using //go:embed |
embed.FS, package-relative paths, fs.Sub, read-only assets |
air.instructions.md |
Air config and local Go dev containers | Hot reload config, excludes, disposable binaries, dev-only usage |
python.instructions.md |
**/*.py |
Python language-level conventions |
fastapi.instructions.md |
FastAPI route and API files | Routers, dependency injection, request/response models |
pydantic.instructions.md |
Pydantic schemas, models, DTOs, and settings | Pydantic v2 validation, serialization, settings, boundaries |
langchain.instructions.md |
LangChain chains, agents, retrievers, and RAG files | Runnables, tools, retrieval, structured outputs, tracing |
langgraph.instructions.md |
LangGraph graph, workflow, and agent files | State schemas, nodes, checkpoints, interrupts, resume |
llm-service.instructions.md |
LLM service and agent integration files | Provider boundary, structured outputs, retries, limits, observability |
python-sqlite.instructions.md |
Python SQLite database/repository files | sqlite3, SQLAlchemy SQLite, parameter binding, connection lifecycle |
postgres.instructions.md |
PostgreSQL SQL, migrations, repositories, and database files | Constraints, indexes, transactions, query plans, connection pools |
chromadb.instructions.md |
ChromaDB, RAG, retriever, and embedding files | Clients, collections, embedding functions, metadata filters, backups |
supabase.instructions.md |
Supabase clients, migrations, RLS, functions, and config | RLS, API keys, policies, migrations, generated types, Edge Functions |
kotlin.instructions.md |
**/*.kt |
MVVM, Hilt, Room, Compose |
android-sqlite.instructions.md |
Android Room, DAO, entity, migration, and repository files | Room, DAOs, migrations, async queries, migration tests |
react.instructions.md |
**/*.tsx, **/*.jsx |
TanStack Query, feature-sliced, a11y |
astro-mdx.instructions.md |
**/*.mdx, **/*.astro |
Frontmatter, no H1, code fences |
testing.instructions.md |
test files and test folders | General test design independent of framework |
e2e-testing.instructions.md |
E2E test files and config | User journeys, stable selectors, reliable verification |
integration-testing.instructions.md |
integration test files and folders | Module boundaries and controlled external dependencies |
api-security.instructions.md |
API handlers, controllers, routes, middleware | API input, authorization, logging, abuse controls |
web-security.instructions.md |
browser UI and route components | XSS, redirects, client storage, client/server validation |
android-security.instructions.md |
Android Kotlin and manifest files | Storage, permissions, intents, networking |
docker.instructions.md |
Dockerfiles and .dockerignore files |
Multi-stage builds, pinned images, non-root users, no baked secrets |
docker-compose.instructions.md |
Docker Compose files | Healthchecks, networks, volumes, env files, local orchestration |
github-actions.instructions.md |
GitHub Actions workflows and actions | Permissions, OIDC, pinned actions, concurrency, artifacts |
gcp.instructions.md |
GCP CLI scripts, Cloud Build, and deploy scripts | Explicit project/account, ADC vs gcloud auth, impersonation |
terraform.instructions.md |
Terraform .tf and .tfvars files |
fmt, validate, remote state, lockfile, modules, imports, moved blocks |
react-router.instructions.md |
Route modules | React Router v7 loaders, actions, typegen |
sqlite.instructions.md |
SQL, database, storage, repository, and migration files | SQLite schema, pragmas, transactions, indexes, migrations |
tailwind.instructions.md |
Component TSX files | Tailwind CSS v4 utilities and pitfalls |
tanstack-query.instructions.md |
hooks, API, query files | TanStack Query v5 hooks and keys |
xstate.instructions.md |
*.machine.ts |
XState v5 machines and actors |
zod.instructions.md |
schemas and API files | Zod v4 schemas and parsing |
zustand.instructions.md |
store files | Zustand v5 stores and middleware |
Geremmyas no longer distributes permanent custom-agent profiles. Capable runtimes create bounded subagents only when isolation, specialization, or parallelism materially helps; trivial work remains with the primary agent. Each delegation supplies objective, scope, ownership, evidence, unknowns, output, and authority. The primary owns integration and Git.
Independent review is a lazy reference under
verify/references/review-contract.md, not a discoverable skill or permanent
persona. Targets without subagents execute the same contract inline and report
that isolated context was unavailable. Generic target-adapter support remains
available for future custom agents that provide a concrete permission, model,
tool, MCP, or isolation benefit.
There are three review surfaces, each for a different context:
| Surface | How to invoke | Best for |
|---|---|---|
verify review contract |
Runtime subagent after fresh verification, or directly for an explicit read-only review | Spec-driven review against acceptance criteria, tests, code, and risk boundaries. |
/review prompt |
Type /review in Copilot Chat |
Quick general review — security, readability, correctness checklist. Use for fast feedback on any code, no specs needed. |
Built-in /review |
/review in Copilot CLI |
Diff-based review — analyzes staged/branch changes automatically. Use for pre-commit or pre-PR checks. |
Skills are explicit capabilities. Workflow skills guide multi-step work; utility skills provide focused technical recipes or generated artifacts.
Active workflow skills ship with coding; closing capabilities ship with
quality; base composes both. Stack-specific recipe skills (for example
validate-with-zod, model-state-with-xstate, migrate-react-router) install
when you add the matching pack (react-data, react-router, etc.); core rules
live in the paired instruction files.
Use a top-level skill only for a capability users invoke directly. Composition
steps, checklists, examples, review contracts, and policy belong in the owning
skill's references/.
| Skill | Purpose |
|---|---|
refine |
Resolve material ambiguity before specification; unload when clear |
spec |
Create or update the numbered spec, plan, and tasks package |
tdd |
Implement one observable behavior at a time with red-green-refactor |
bugfix |
Reproduce, diagnose, regression-test, and fix bugs |
docs |
Route lazily to project docs, glossary, ADR/MADR, or RFC support |
git-commit |
Create task-owned atomic Conventional Commits from verified diffs |
verify |
Require fresh execution evidence and expose the lazy independent-review contract |
decision-framework |
Evaluate material decisions (decision-support pack) |
skill-authoring |
Create or revise skills (skill-maintenance pack) |
game-art-2d |
Create and integrate 2D runtime art (game-art; legacy pack name game-art-2d) |
gameplay-programming-2d |
Build movement, combat, interaction, physics, and scene flow (game-core) |
game-testing-2d |
Test deterministic simulation, engine integration, and exported behavior (game-core) |
game-feel-2d |
Tune controls, camera, impact, and moment-to-moment feedback (game-ui) |
game-ai-2d |
Build enemy perception, decisions, navigation, and encounters (game-systems) |
game-performance-2d |
Profile and optimize measured 2D game bottlenecks (game-performance) |
procedural-generation-2d |
Generate deterministic, validated maps and content (game-systems) |
game-save-n-progress |
Implement versioned saves, settings, and progression (game-systems) |
game-audio-2d |
Integrate routed, bounded, and platform-aware game audio (game-audio) |
game-ui-accessibility |
Build responsive UI, localization presentation, focus, touch, and accessibility (game-ui) |
game-build-and-release |
Produce and verify Phaser bundles and Godot exports (game-delivery) |
typescript-ci-setup |
TypeScript CI pipeline (typescript-ci pack) |
python-ci-setup |
Python CI pipeline (python-ci pack) |
go-ci-setup |
Go CI pipeline (go-ci pack) |
rust-ci-setup |
Rust CI pipeline (rust-ci pack) |
rust-release |
Rust crate/binary release engineering (rust-release pack) |
android-ci-setup |
Android CI pipeline (android-ci pack) |
terraform-change |
Plan and execute context-aware Terraform changes |
gcloud-operation |
Prepare safe Google Cloud CLI operations with explicit project/account context |
ci-workflow |
Create, review, or debug GitHub Actions CI/CD workflows |
llm-integration-review |
Design or review production LLM service integrations |
langgraph-agent-design |
Design LangGraph agents around state, checkpoints, tools, and HITL |
supabase-workflow |
Plan Supabase schema, RLS, Auth, Storage, and Edge Function changes |
postgres-query-review |
Review PostgreSQL queries, migrations, indexes, and plans |
chromadb-rag-workflow |
Design or review ChromaDB-backed RAG ingestion and retrieval |
validate-with-zod |
Zod validation recipes (API clients, forms, localStorage) |
migrate-react-router |
Step-by-step guide for React Router v6 → v7 migration |
model-state-with-xstate |
XState v5 recipes: React integration, actors, testing |
manage-state-with-zustand |
Zustand v5 recipes: middleware setup, immer, XState sync |
text-review |
Rewrite technical blog drafts while preserving voice and facts (blog pack) |
scientific-paper |
Create, review, critique, and validate scientific papers (research pack) |
scientific-case-study-research |
Design empirical SE case studies with protocol, triangulation, and validity checks (research pack) |
premortem |
Run a premortem on plans, decisions, or launches — assumes failure and works backward to find blind spots (premortem pack) |
The coding pack installs specs/README.md as the repository index: families,
reserved number blocks, status lifecycle (Draft → Ready → In Progress
→ Verified), and per-family tables (Spec, Title, Status, Depends on).
Each spec folder uses a global number:
specs/README.md
specs/NNNN-<feature-slug>/spec.md # YAML frontmatter: spec, family, phase, status
specs/NNNN-<feature-slug>/plan.md
specs/NNNN-<feature-slug>/tasks.md
Agents update specs/README.md whenever a spec changes lifecycle status.
Every feature uses a folder with all three artifacts (see above). Agents
advance a package to Ready automatically when its acceptance criteria are
testable, contracts and dependencies are known, verification commands exist,
and no material product decision remains unresolved. Bugfixes run as an
autonomous reproduce-red-fix-green-document loop. Verified slices create atomic
local Conventional Commits by default; an explicit no-commits, read-only,
plan-only, or no-edits instruction overrides that behavior.
tasks.md uses checkboxes for progress ([ ] pending, [~] in progress,
[x] done). Agents must keep checkboxes current while working. Each task
includes a test-type (unit, integration, or both).
Use specs/README.md for status across specs. When resuming work, read the
feature folder (spec.md, plan.md, tasks.md) and continue from the
in-progress or next pending task.
Local commit authority never implies push, amend, rebase, merge, tag, release, publication, or production deployment.
Do not create GitHub Issues, labels, or issue-state workflows unless explicitly requested.
Agents and skills should read domain vocabulary before writing PRDs, specs, tests, reviews, bugfix documents, ADRs, or user-facing copy.
GLOSSARY.md is the default vocabulary artifact for new projects. CONTEXT.md
is also supported for repositories that already use that convention. If both
exist, read both; treat GLOSSARY.md as the canonical term list and
CONTEXT.md as broader domain context unless the project says otherwise. If
they conflict, use repository evidence and GLOSSARY.md precedence, reconcile
both, and record the decision.
Absence of both files should not block work. Create or update vocabulary only when real ambiguity, inconsistent naming, or overloaded domain language appears.
Command guardrails that intercept dangerous terminal commands:
- BLOCK: force-push, destructive Git resets, broad root/home deletion,
terraform destroy, and secret leaks - ASK:
git pushand privilegedsudocommands
Existing or catalogued dependencies and verified local/disposable/test targets
are autonomous. A new uncatalogued direct dependency needs provenance,
maintenance, security, and license evidence. It also needs build-versus-buy
analysis and explicit user choice before installation. Every production mutation, deploy, release,
publication, or policy change needs explicit user authorization.
Guarded Terraform, gcloud, and psql mutations require a verified
non-production marker such as GEREMMYAS_TARGET=test; otherwise the hook treats
the target as protected.
Rules are configurable in guardrails-rules.txt.
Template for mise tool version management. Uncomment the tools your project uses.
The workflow loads only the capability needed by the current phase. A simple,
well-scoped task needs no workflow skill; ambiguity starts with refine, a
feature advances through spec and tdd, and completion loads verify.
refine? ──▶ spec ──▶ tdd (red/green/refactor) ──▶ verify ──▶ review? ──▶ docs?
ambiguity durable one behavior per cycle evidence isolated matching
only artifacts subagent mode only
For new features:
- Inspect the request and repository directly; load
refineonly when a material requirement remains ambiguous. - Use
specto create the durablespec.md,plan.md, andtasks.mdpackage. - Use
tddfor one vertical behavior at a time. - Load
verifyonly when fresh completion evidence is due. - When independent review is useful, have the runtime create a bounded
subagent using
verify/references/review-contract.md. - Load
docsonly when public API, architecture, setup, configuration, vocabulary, ADR, or RFC work is actually needed.
For existing features:
- Use
refineonly if repository evidence does not establish whether the product flow changes. - If the product flow changes, update the PRD before writing specs.
- If the product flow does not change, write targeted specs and continue through tasks, tests, implementation, review, and docs.
For bugs:
- Use
bugfixto document the symptom, impact, reproduction, and ranked hypotheses. - Write the regression test at the correct boundary and record its command, output, and expected failing reason before changing production code.
- Apply the smallest root-cause fix, then rerun the regression test, original reproduction, and nearest relevant suite.
- Record the actual cause, remove temporary instrumentation, and document any residual evidence that automation could not establish.
- Write a postmortem only when the bug was an outage.
After deliberately installing content/prompts/base.prompt.md as a Copilot
custom prompt, invoke it in Copilot Chat:
/base Add user authentication with JWT
The prompt advances through machine-readiness, red, green, review, documentation, and verification gates without routine approval pauses. It asks only when a material product decision remains unresolved or an authority boundary applies.
The migration inventory lives in catalog/workflow-gates.json. Repository lint
scans catalogued workflow content, prompts, target adapters, and public workflow
docs, and fails when it finds an unclassified conversational pause.
You can also run each step individually:
Use the refine skill to resolve the remaining ambiguity in JWT authentication
The agent asks only questions whose answers cannot be established safely from the repository. Once the behavior is clear, it unloads that phase and records the result in durable artifacts.
If you already know the requirements and don't need an interview:
Use the spec skill to create a spec for JWT auth
Use the tdd skill for the next behavior in specs/user-auth/tasks.md
Each acceptance criterion from the spec becomes at least one test. Tests must fail initially (red phase).
Write code to make the tests pass. The golden rule: never modify the tests. If a test seems wrong, revisit the spec first.
Create an independent read-only subagent using the verify review contract
The bounded reviewer checks spec → tests → code alignment and returns findings, evidence, unknowns, and a verdict. It is created by the assistant runtime rather than installed as a permanent custom agent.
For quick reviews without specs, use the /review prompt instead.
Use the docs skill in project-docs mode for the user-auth feature
Only needed when public API, architecture, or setup changed. Skip for internal-only changes.
When the feature involves significant design choices, use these before or alongside the SDD cycle:
| Need | Tool | Output |
|---|---|---|
| Explore architecture opportunities | Dynamic bounded subagent when isolation adds value | Evaluated options and evidence |
| Record a durable decision | docs skill in ADR mode |
ADR in docs/decisions/ (MADR 4.0) |
| Develop a proposal | docs skill in RFC mode |
Repository-local RFC |
All synced files are meant to be edited. After running geremmyas sync:
- Review
AGENTS.md— adjust artifact paths, workflow rules, and skill routing for the repository - Edit
.github/copilot-instructions.md— fill in project name, description, directory structure, and build commands - Add more packs — run
geremmyas add <pack>andgeremmyas sync - Tune guardrails — add or remove rules in
guardrails-rules.txt
mise trust && mise install # setup Go toolchain
go test ./... # run tests
go build ./cmd/geremmyas # build binarySee CONTRIBUTING.md and docs/creating-packs.md for contributor guidelines.
See CHANGELOG.md for release history.
MIT