Skip to main content

eou-foundry-init

Use when the user asks to initialize, scaffold, or create a new EOU-governed application. Creates a sibling directory with foundry/, instance copies of plugin templates, a starter constitution, and an initial git repo. Refuses to overwrite an existing directory.

Source facts

Repository
xiaolai/eou-foundry
Last source activity
September 30, 2026 at 06:02
Detected SKILL.md language
English
Stars
10
Forks
2

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
eou-foundry-init
description
Use when the user asks to initialize, scaffold, or create a new EOU-governed application. Creates a sibling directory with foundry/, instance copies of plugin templates, a starter constitution, and an initial git repo. Refuses to overwrite an existing directory.
metadata
{"short-description":"Scaffold a new EOU-governed app"}
# Initialize EOU-Governed Application You are scaffolding a new EOU-governed application. The user is invoking this from a workspace directory and should supply an app name. ## 1. Get the app name If the user supplied an app name in their request, use it. Otherwise ask: "What is the application's slug name? (lowercase, alphanumeric + hyphen)" Optional inputs: - A one-line description of what the application does (defaults to the slug) - `NO_GIT=1` — set this environment variable before the command to skip `git init` in the new directory (default: initialize git) Validate the slug. Reject names containing `/`, `\`, `..`, a leading `.`, or any character outside `[a-z0-9-]`. Refuse to overwrite an existing directory. ## 2. Run init script > `${PLUGIN_ROOT}` is the Codex runtime env var for the plugin root. The Claude Code equivalent is `${CLAUDE_PLUGIN_ROOT}`. Both resolve to the same directory — the name differs by runtime. Run `bash "${PLUGIN_ROOT}/scripts/init_app.sh" "$APP_NAME" "$DESCRIPTION" $([ "$NO_GIT" = "1" ] && echo "--no-git")` and let the script handle the existence check and scaffolding atomically. Report what it produced. ## 3. What the script does (for reference) `scripts/init_app.sh` is idempotent in the sense of "refuse to clobber": - Refuses if `./<app-name>/` already exists. - Creates `./<app-name>/` and inside it: - `foundry/constitution.yml` and `foundry/registry.yml` (empty), filled from `templates/`. Nothing else is copied: governance, the failure taxonomy, the maturity model, refactoring patterns, the runtime contract and the meta-EOUs stay in `engine/` and are inherited. An app shadows one by adding `foundry/overrides/<file>.yml`. - Empty `foundry/eous/`, `foundry/incidents/`, `foundry/audits/no-trace/`, `foundry/runs/`, `foundry/overrides/` and `foundry/self-evolution/{ecp/{proposed,approved,implemented,rejected},regression/{cases,fixtures},upstream/{proposed-to-plugin,landed}}/`. - `AGENTS.md`, plus `CLAUDE.md` and `GEMINI.md` that import it. - `.claude/settings.json` and a `.claude/hooks/foundry_guard.py` hook that runs the validator on edited foundry files. - `.gitignore` with the standard AI-tool ignores. - `README.md` one-paragraph application overview. - Substitutes `{{APP_NAME}}` and `{{DESCRIPTION}}` placeholders in the two template files. - Unless `--no-git`, runs `git init` and makes a single initial commit. - Runs `validate_foundry.py` against the new app to confirm the scaffold passes the schema check. ## 4. Report If the script returns exit code 0, surface a summary of what was created: ``` App initialized: ✓ <app-name>/ created with foundry/, .claude/, AGENTS.md, README.md ✓ foundry/constitution.yml from template, customized for <app-name> ✓ foundry/registry.yml empty (entries: []) ✓ git repo initialized (or "skipped: NO_GIT=1") ✓ validate_foundry.py OK Next steps: cd <app-name> edit AGENTS.md # the application's instructions edit foundry/constitution.yml # tailor invariants to this app's domain $generate-eou-candidates # produce candidate EOUs for the workflow ``` ## 5. Constraints - Do not create an app directory interactively — require the slug as input before proceeding. - Do not overwrite an existing directory — delegate the check to `init_app.sh` and report the exit code 2 error. - Do not run `git init` or `validate_foundry.py` manually — the script handles both atomically. - Do not modify template files or the plugin's own foundry during initialization. - Do not proceed past Step 2 if the slug fails validation — report the error immediately. ## 6. Errors If `init_app.sh` fails: - Exit code 2 (existing directory): report "Directory `<app-name>/` already exists; refusing to overwrite. Pick a different name or move it aside." - Exit code 3 (invalid slug): report "Invalid app name. Use lowercase alphanumeric + hyphen only." - Exit code 4 (validate_foundry failed): show the validator output, then say "Scaffold completed but validation found issues. Inspect `<app-name>/foundry/` and fix before continuing." - Any other non-zero: show the script's stderr verbatim.
View on GitHub