Agent Camp Meta-Generator — a tool for creating domain-specific agent onboarding packages.
A Camp is an onboarding package that makes an AI agent instantly useful in a specific domain. Think of it like employee onboarding — but for agents.
Camp = Identity (who am I?) + Skills (what can I do?) + Knowledge (what do I know?)
| Layer | Contents | Example |
|---|---|---|
| Identity | Personality, values, operating rules | "You are a V8 Platform Admin Agent. Accuracy first." |
| Skills | Executable workflows (AgentSkills format) | v8-api/SKILL.md — user search, credit grant, comment management |
| Knowledge | Domain glossary, decision trees | "Credit amounts are in USD. Collection index 0 = Multiplayer." |
A camp is agent-agnostic — each camp's install.sh handles installation via skillpm across Claude Code, OpenClaw, Codex, Gemini CLI, and others.
| Camp | Domain | Skills |
|---|---|---|
| v8-admin | V8 Platform Admin | v8-api, gql-ops, gws-sheets |
| 9c-backoffice | Nine Chronicles Table Patch | 9c-backoffice, gql-ops |
| campforge-guide | CampForge Usage Guide | camp-create, camp-validate, camp-add-skill, camp-sync, camp-bench, campforge-interview |
curl -fsSL https://raw.githubusercontent.com/planetarium/CampForge/main/camps/v8-admin/install.sh | bashThis uses skillpm + GitHub Release tarballs to install skills into a workspace/ subdirectory. Set CAMP_VERSION to pin a specific release, or WORKSPACE to choose the install directory.
| Platform | Identity | Skills | Knowledge |
|---|---|---|---|
| Claude Code | .claude/CLAUDE.md |
.claude/skills/{skill}/ |
.claude/knowledge/ |
| OpenClaw | ~/.openclaw/workspace/SOUL.md etc. |
~/.openclaw/workspace/skills/ |
— |
| Generic | — | .agents/skills/ |
— |
Each camp requires specific environment variables. The agent will ask for them on first use, but you can set them upfront:
v8-admin:
export V8_GQL="https://planetarium-oag.fly.dev/v8-admin/graphql"
export V8_TOKEN="<your JWT>"
export V8_SKILL_DIR="<path to v8-api skill directory>" # for --queryFile paths9c-backoffice:
export BO_GQL="https://planetarium-oag.fly.dev/9c-bo/graphql"
export BO_API_KEY="<your API key>"
export BO_SKILL_DIR="<path to 9c-backoffice skill directory>" # for --queryFile paths"smoke test를 실행해줘"
Each camp includes a smoke test (tests/smoke-test.md) that validates all skills are working.
Load the interview skill into your LLM and say:
"Create a new camp"
The LLM will ask questions about your domain, write a domain-spec.yaml, run campforge create, and fill in the SKILL.md files.
cd cli && npm installCreate a camp from a domain spec YAML:
./node_modules/.bin/tsx bin/campforge.ts create \
--from domain-spec.yaml \
--persona senior \
--language koThis generates a camp scaffold (identity, tests). Skills are created as separate packages in packages/ and referenced from the camp's package.json.
Validate a camp:
./node_modules/.bin/tsx bin/campforge.ts validate ../camps/v8-adminAdd a skill to an existing camp:
./node_modules/.bin/tsx bin/campforge.ts add-skill \
--camp ../camps/v8-admin \
--skill cost-analyzer \
--description "Analyze cloud infrastructure costs"- Create a camp directory with identity files (
identity/SOUL.md,IDENTITY.md,AGENTS.md) - Create skill packages in
packages/{skill-name}/following AgentSkills format - Add domain knowledge to
knowledge/ - Add skill dependencies to the camp's
package.json - Run
campforge validateto check structure
CampForge/
├── packages/ # All skill packages (resolved via skillpm)
│ ├── gql-ops/ # Shared: GraphQL operations
│ ├── gws-sheets/ # Shared: Google Sheets operations
│ ├── v8-api/ # V8 platform API
│ ├── 9c-backoffice/ # Nine Chronicles table patch
│ ├── camp-*/ # CampForge guide (5 packages)
│ └── campforge-interview/ # Camp creation interview
├── camps/ # Camp definitions (no skill code)
│ ├── v8-admin/
│ ├── 9c-backoffice/
│ └── campforge-guide/
├── cli/ # CampForge CLI
├── scripts/ # Release & install tooling
│ ├── release-pack.sh # Pack tarballs for GitHub Release
│ └── install-common.sh # Shared install functions (gws, etc.)
└── package.json # npm workspaces root
A camp contains no skill code — skills are pulled in via skillpm from packages/.
camps/{domain}/
├── manifest.yaml # Metadata, skill references, compatibility
├── package.json # Skill dependencies (@campforge/* packages)
├── install.sh # Installer (skillpm + release tarballs)
├── identity/ # Agent identity
│ ├── SOUL.md
│ ├── IDENTITY.md
│ └── AGENTS.md
├── knowledge/ # Domain knowledge
│ ├── glossary.md
│ └── decision-trees/
└── tests/
├── smoke-test.md
└── scenarios/
packages/{skill-name}/
├── package.json # Name, version, skill dependencies
└── skills/{skill-name}/
├── SKILL.md # AgentSkills skill definition
├── queries/ # (optional) GraphQL query files
└── references/ # (optional) API docs, examples
| Package | Description | Used by |
|---|---|---|
@campforge/gql-ops |
GraphQL operations — gq CLI, schema introspection, self-healing | v8-admin, 9c-backoffice |
@campforge/gws-sheets |
Google Sheets operations via gws CLI | v8-admin |
@campforge/v8-api |
V8 platform API — users, credits, verses, comments | v8-admin |
@campforge/9c-backoffice |
Nine Chronicles table patch operations | 9c-backoffice |
@campforge/camp-* |
CampForge guide skills (5 packages) | campforge-guide |
@campforge/campforge-interview |
Interactive camp creation via guided interview | campforge-guide |
Each camp is released independently with its own tag ({camp-name}-v{version}).
Push a tag and CI automatically packs tarballs and creates the GitHub Release:
git tag v8-admin-v1.1.0
git push origin v8-admin-v1.1.0
# → CI runs release-pack.sh --camp v8-admin → gh release createEach camp's install.sh references tarballs from its own release tag. Set CAMP_VERSION to pin a version during install.
| Platform | Identity | Skills | Heartbeat |
|---|---|---|---|
| Claude Code | CLAUDE.md (merged) | .claude/skills/ | — |
| OpenClaw | SOUL.md, AGENTS.md | workspace/skills/ | Supported |
| Codex | AGENTS.md (merged) | .codex/skills/ | — |
| Gemini CLI | — | .gemini/skills/ | — |
| Generic | — | .agents/skills/ | — |
Apache-2.0