بنقرة واحدة
g-skl-setup
Initialize gald3r in a project — folder structure and template files for task management.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Initialize gald3r in a project — folder structure and template files for task management.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Triage non-code defects (spec_defect, policy_incongruity, design_gap): assess risk, auto-fix bounded safe issues, and log the rest as tracked bugs.
Compress the NON-gald3r sections of AGENTS.md/CLAUDE.md (and *memory*.md) to cut token overhead, while strictly preserving the install-managed gald3r SECTION ranges, code blocks, and URLs. Dry-run by default; apply only after confirmation.
Own and manage all feature data — FEATURES.md index, features/ individual files, staging lifecycle (staging→specced→committed→shipped), harvest source collection, and feature promotion. Single source of truth for everything feature-related.
Create well-structured git commits following gald3r conventions, with proper type prefixes, task references, and clean trailers (no AI co-author footers per C-021).
Tiered .gald3r/ health and intervention system. L1=triage (structural), L2=diagnosis (plan coherence), L3=surgery (cross-subsystem interface audit), L4=ecosystem (linked project negotiation). Replaces g-skl-medic.
gald3r_muninn MCP — query the local codebase knowledge graph for impact analysis, caller chains, dependencies, and symbol search. Clean-room rewrite (T1147 epic, T1153-T1158) of the GitNexus integration; auto-loaded by the example_app MCP server from docker/gald3r/tools/plugins/muninn/. Wire into g-go-code Step b0 Impact Scan before any implementation.
| name | g-skl-setup |
| description | Initialize gald3r in a project — folder structure and template files for task management. |
| token_budget | medium |
| subsystem_memberships | ["PROJECT_IDENTITY_SETUP"] |
First-time setup of gald3r in a project. @g-setup command.
This skill creates the SLIM layout. Do not create the folders marked "full only" below.
| Folder | Slim | Full (<gald3r_source> only) |
|---|---|---|
tasks/, bugs/, features/, subsystems/, reports/, logs/ | ✅ | ✅ |
config/ (HEARTBEAT.md, SPRINT.md, AGENT_CONFIG.md) | ❌ | ✅ |
experiments/ (EXPERIMENTS.md, HYPOTHESIS.md, SELF_EVOLUTION.md) | ❌ | ✅ |
linking/ (README.md, INBOX.md) | ❌ | ✅ |
vault/ | ❌ | ✅ |
phases/ (legacy v2) | ❌ | ✅ |
First-run setup legitimately writes into .gald3r/ (.identity, the folder layout, PROJECT.md/PLAN.md/CONSTRAINTS.md, …), but the pre-tool-call gald3r-guard hook (g-hk-pre-tool-call-gald3r-guard) denies unsupervised Edit/Write to .gald3r/ paths per g-rl-33 (".gald3r/ Folder Gate"). Setup is an authorized first-run write, so it must run with the guard bypass set — otherwise the guard false-denies legitimate scaffolding (BUG-179 secondary half).
Set GALD3R_HOOK_BYPASS=1 for the scaffold writes only, then clear it once the .gald3r/ control plane exists. Keep the bypass scoped to this setup step — do not export it globally or leave it set for the rest of the session, so the guard keeps blocking unsupervised .gald3r/ writes after setup completes.
# Windows / PowerShell — scope the bypass to the setup scaffold writes
$env:GALD3R_HOOK_BYPASS = '1'
try {
# ... perform the first-run .gald3r/ scaffold writes (Steps 1-8 below) ...
} finally {
Remove-Item Env:GALD3R_HOOK_BYPASS -ErrorAction SilentlyContinue
}
# macOS / Linux / Git Bash — scope the bypass to the setup scaffold writes
export GALD3R_HOOK_BYPASS=1
# ... perform the first-run .gald3r/ scaffold writes (Steps 1-8 below) ...
unset GALD3R_HOOK_BYPASS # always clear it once .gald3r/ exists
GALD3R_ACTIVE_AGENT=<agent_id> is the equivalent allow signal when setup runs under an active gald3r agent — either one satisfies the guard. Regression guard: after setup clears the bypass, an unsupervised Edit/Write to .gald3r/ (no bypass, no active agent) must still be denied by the hook. See .claude/rules/g-rl-33-enforcement_catchall.md and the guard hook g-hk-pre-tool-call-gald3r-guard.
Before any folder or file creation, verify the target install path is not a Workspace-Control controlled_member or migration_source repository. g-skl-setup is for installing a full standalone gald3r project; member repositories use a marker-only .gald3r/ shape that is owned by g-wrkspc-spawn / g-wrkspc-adopt plus the bootstrap helper, NOT full setup.
gald3r workspace member guard --target-path "<absolute_install_target>"
Outcomes:
0 (ALLOW) — target is the workspace control project, outside any workspace, or a template directory; proceed with full setup.1 (BLOCK) — target is a Workspace-Control controlled_member or migration_source. Stop. Direct the user to either:
@g-wrkspc-spawn (new empty member) or @g-wrkspc-adopt (existing standalone gald3r project) if the target should be a workspace member. Both paths use gald3r workspace member bootstrap to create the marker pair (.identity + PROJECT.md) — they do NOT install the full gald3r control plane in members.2 (ERROR) — manifest unparseable. Resolve before continuing. If the project is genuinely standalone (no .gald3r/linking/workspace_manifest.yaml in any ancestor), the helper returns ALLOW; an actual exit 2 indicates a broken manifest.Installed projects ship the same helper at gald3r workspace member guard. External template repos (<ECOSYSTEM_ROOT>/<template_slim>, <ECOSYSTEM_ROOT>/<template_full>, <ECOSYSTEM_ROOT>/<template_adv>) are the only legitimate exception for live .gald3r/ writes outside the control project.
Run this after Step 0 passes and before any .gald3r/ folder creation. Skip entirely if Step 0 blocked (member-repo targets do not need this check).
1. Is this a git repo?
git rev-parse --is-inside-work-tree
"This directory is not a git repo. Initialize git? [Y/n]"
→ Y: git init && git commit --allow-empty -m "chore: initial commit"
→ N: warn "g-go-go autopilot requires git; some features will not work" then continue
2. Does a main branch exist?
gald3r uses a feature-branches-only model — a single permanent main branch plus
short-lived feature/* and fix/* branches. There is no long-lived dev/test branch
(see g-rl-02-git_workflow). Confirm main exists as the integration target:
git branch --list main
main exists, skip.git rev-parse --abbrev-ref HEAD). If the repo
uses a differently-named default (e.g. master), note it; otherwise offer (default Y):
"No 'main' branch found. Create main from current HEAD? [Y/n]"
→ Y: git branch -M main
[if remote exists] git push --set-upstream origin main
→ N: warn "g-go-go autopilot auto-merge will MERGE-BLOCKED without a main branch"
2b. Migrate an existing dev-model repo (USER-SAFETY — T1535 / BUG-099)
A repo created under the retired dev/test promotion model may still carry a
long-lived dev branch. The old auto-merge defaulted to that dev branch, which was
the root cause of the BUG-099 history-loss class. Detect and offer a safe,
confirmation-gated migration — never auto-delete a user branch:
git branch --list dev
dev branch exists. Compute its relationship to main:
git rev-list --left-right --count main...dev
Then offer (default N — destructive-adjacent, so do NOT default Y):
"Legacy 'dev' branch detected (old promotion model). gald3r is now
feature-branches-only -> main. Promote dev's unique work onto main, then
retire dev? This will NOT delete dev until you confirm a second time. [y/N]"
→ Y: 1. git checkout main
2. git merge --ff-only dev (if dev is strictly ahead — safe fast-forward)
- if FF is not possible, STOP and report: "dev and main diverged
(N ahead / M behind). Manual review required — not auto-merging."
3. Only after a clean FF, offer separately:
"Retire (delete) the local 'dev' branch now? [y/N]"
→ Y: git branch -d dev (safe delete; refuses if not merged)
→ N: leave dev in place; print "dev retained — delete manually when ready"
→ N: print "Left dev in place. You remain on the legacy model until migrated."
dev branch exists and never performs a
force-delete (-D) or a non-fast-forward merge without explicit user confirmation.3. Remote check (info only — never blocks setup)
git remote -v
"No git remote configured. g-go-go autopilot cross-session merges require push access. Add later: git remote add origin <url>"All prompts default to Y and are non-blocking — declining any prompt adds a warning but does not stop the setup. The agent should present options as numbered choices in its response, then run the chosen commands.
Offered for all project types (3d_modeling and content_creation benefit most; software_development repos with large binaries also). Not enabled by default — must be explicitly opted in.
"Enable Git LFS for binary files? Recommended for 3d_modeling / content_creation. [y/N]"
→ Y:
git lfs install
copy assets/gitattributes-lfs.template → <project>/.gitattributes
(if .gitattributes exists, append the gald3r LFS block under a
'# <!-- gald3r LFS SECTION -->' marker rather than clobbering it)
git add .gitattributes
→ N (default): skip — existing repos are unaffected.
Storage-cost note to surface: GitHub LFS bills for storage + bandwidth beyond
the free quota (1 GB / 1 GB-month on free plans); large media histories can exceed
it quickly. Use LFS deliberately, not as a default. Verify patterns apply with
git check-attr filter <file> (expect filter: lfs).
The template (assets/gitattributes-lfs.template) covers: .psd .ai .fbx .obj .blend .max .png .jpg .gif .mp4 .mov .wav .zip .glb .gltf and similar binaries.
□ .gald3r/TASKS.md exists AND > 20 lines?
□ .gald3r/tasks/ has > 5 files?
□ PROJECT.md has non-template content?
→ YES: EXISTING project → ask: Merge / Skip / Reset (DESTRUCTIVE)
→ NO: FRESH install → proceed
Call gald3r_install MCP tool (if available):
gald3r_install(project_path="{absolute_path}", use_v2=True)
If gald3r_install unavailable, create manually:
.gald3r/, .gald3r/tasks/, .gald3r/features/, .gald3r/bugs/, .gald3r/subsystems/, .gald3r/reports/, .gald3r/logs/, .gald3r/specifications_collection/.gald3r/specifications_collection/README.md with the index template (see template in <ECOSYSTEM_ROOT>/<template_full>/.gald3r/specifications_collection/README.md).gald3r/learned-facts.md from the template in <ECOSYSTEM_ROOT>/<template_full>/.gald3r/learned-facts.md.gald3r/.identity contains vault_location, create {vault_location}/log.md as a seed file (one header line — append_log() will populate it on first ingest).gald3r/.identity contains vault_location, create {vault_location}/projects/{project_name}/ directory; this is where repos.txt and repo_tracker.json will live when github_sync.py runs.gald3r/.identity contains vault_location and {vault_location}/obsidian_setup.md does not already exist, copy <ECOSYSTEM_ROOT>/<template_full>/.gald3r/vault/obsidian_setup.md (or the installed equivalent at {skill_root}/reference/obsidian_setup.md) to {vault_location}/obsidian_setup.md. This seeds the one-page Obsidian setup guide so vault users can find it immediately.TASKS.md, add a research log section below the task listCONSTRAINTS.md with:
ID | Status | Name | Scope | One-line summary<!-- CONSTRAINT SCOPE: local-only (default) | inheritable (propagate to children on spawn) | shareable (peers opt-in) | ecosystem-wide (all topology members) -->
3b. Skill trust-level warning (C-032 — non-blocking): when the install bundles or copies any skills (template skill packs, adv-tier skill_packs), apply the same provenance check as g-skill-pack-add step 3b — surface a non-blocking warning for any skill whose skill_trust_level: is community or unset (trust level, source, allowed-tools: reminder, inspect-before-first-invocation). Slim setup ships only core skills, so this normally produces no warning; it fires when a non-core pack is added during or after setup. Canonical wording: skl-skill-create/SKILL.md → ### skill_trust_level: declaration.
python -c "import uuid; print(uuid.uuid4())" > .gald3r/.identity
4b. Set project_type (T1280):
Ask the user "What kind of project is this?" with numbered choices, then write
the chosen value to .gald3r/.identity as project_type=<value> (key=value
format, canonical lowercase). Pressing enter selects the default.
What kind of project is this?
1. software_development (default — enables GitHub PR/issue integration, code review, etc.)
2. content_creation
3. 3d_modeling
4. research_analysis
5. freeform
[1]
software_development.--project-type=<value> CLI flag to skip the prompt.freeform.Project type set to: {value}.project_type gates which Workflow Profile, Integration Bundle,
and Command Set are active (e.g. GitHub integration activates only for
software_development).4c. Public-publish history mode (T423 — explicit, OFF-by-default safety toggle):
Ask only when the project may graduate/publish to a public repo (i.e. graduation_tier
is dual/triple, or the user asks for a public sibling). Otherwise skip silently and
leave the safe default in place. This is also asked on @g-setup --upgrade-existing
so existing projects can opt in deliberately.
Public publish: how should git history be handled when you publish to a public repo?
1. carry (default) — keep full git history. Non-destructive, safe.
2. scrub (Mode A) — publish with ZERO git history for IP protection.
DESTRUCTIVE: the public repo's history is replaced and cannot
be recovered there. Requires explicit confirmation at publish time.
[1]
carry — never scrub by default.--publish-history=<carry|scrub> CLI flag to skip the prompt..gald3r/.identity as publish_history_mode=<carry|scrub>
(key=value, lowercase). If the project never publishes publicly, the key may be omitted
(readers treat an absent value as carry).scrub here only RECORDS the intent; the destructive operation still requires an
explicit -ConfirmScrub (or engine equivalent) at publish time (g-skl-release / graduate).Public-publish history mode set to: {value} (and, for scrub, a one-line reminder
that publish will still require -ConfirmScrub).Verify structure (slim v3 layout — ground truth from .gald3r):
.gald3r/ ✅
├── .identity ✅
├── .gitignore ✅
├── TASKS.md ✅
├── PLAN.md ✅ ← master strategy (above PRDs)
├── PROJECT.md ✅ ← mission, goals, Project Linking
├── CONSTRAINTS.md ✅ ← non-negotiable constraints
├── BUGS.md ✅ ← bug index (root)
├── SUBSYSTEMS.md ✅
├── IDEA_BOARD.md ✅
├── FEATURES.md ✅ ← PRD index
├── learned-facts.md ✅ ← agent-captured learning (updated via /g-learn)
├── features/ ✅ ← individual PRD files
├── bugs/ ✅ ← optional per-bug detail files
├── reports/ ✅
├── logs/ ✅
├── subsystems/ ✅ ← per-subsystem spec files
├── specifications_collection/ ✅ ← incoming specs from stakeholders
└── tasks/ ✅
docs/ ✅
NOT in slim:
config/,experiments/,linking/,vault/,phases/These belong in<gald3r_source>only. Do not create them here. Whenlinking/IS created (full tier): also seed.gald3r/linking/capabilities.mdusing the template at<ECOSYSTEM_ROOT>/<template_full>/.gald3r/linking/capabilities.md. Replace{project_slug}and{project_name}placeholders with the actual project name. Replace{YYYY-MM-DD}with today's date.
Create PROJECT.MD scaffolding:
.gald3r/PROJECT.md — include a Project Linking section (parents, children, siblings); starts with relationships: noneSubsystem Discovery (run after folder creation):
Scan the project to identify subsystems. For each, create a spec file in .gald3r/subsystems/:
What to scan:
src/ subdirectories → candidate subsystemsFor each identified subsystem, create spec with:
locations:
code: [source file paths]
skills: [relevant gald3r skills]
agents: [relevant gald3r agents]
commands: [relevant gald3r commands]
config: [config files]
db_tables: [owned tables]
Plus: Responsibility, Data Flow, Architecture Rules, When to Modify sections.
Classify as:
Update SUBSYSTEMS.md with the index table, sub-features table, integrations table, and mermaid interconnection graph.
Write skills lock file (T1043):
After platform skill directories are placed (whether by gald3r_install MCP, by bin/install.js, or manually), write gald3r-skills-lock.json at project root via:
gald3r skills-lock
SKILL.md so future runs can detect tamper / drift.-Action VERIFY during gald3r validate runs (engine verb, T520).-Action UPGRADE -SourceRoot <<gald3r_source> path> to classify each installed skill as unchanged | local-modified | upstream-changed | both-changed | new | removed before pulling a new gald3r version.docs/SKILLS_LOCK_FORMAT.md.8b. Codebase Graph Initialization (gald3r_muninn, T1149) — non-blocking, always optional:
Check index state via graph_status (MCP) or python .claude/skills/g-skl-muninn/scripts/graph_impact.py -File <any source file> -Json. If it reports index_missing / warning: not_indexed, offer to build it now:
python -m docker.gald3r.tools.plugins.muninn.indexers.python_indexer --root . # Python sources
node docker/gald3r/tools/plugins/muninn/indexers/ts_indexer.js --root . # TS/JS sources (needs Node.js)
The gald3r_muninn indexers run natively on Windows, macOS, and Linux (clean-room rewrite — no WSL2/Docker required, unlike the deprecated GitNexus). If Python or Node.js is missing, skip that indexer and continue — setup never blocks on graph init, and if the user declines the index simply stays absent (g-go-code Step b0 falls back to ripgrep).
Auto-wire the post-commit refresh hook (idempotent, after user confirmation) so the index stays fresh:
PowerShell (Windows — native):
$hookFile = ".git/hooks/post-commit"
# use the active platform's hook path (.cursor/hooks/, .claude/hooks/, ...)
$hookLine = "uv run python .cursor/hooks/g-hk-graph-update.py"
$existing = if (Test-Path $hookFile) { Get-Content $hookFile -Raw } else { "" }
if ($existing -notlike "*$hookLine*") { Add-Content -Path $hookFile -Value $hookLine }
Bash (Linux / macOS / Git Bash on Windows):
HOOK_FILE=".git/hooks/post-commit"
# use the active platform's hook path (.cursor/hooks/, .claude/hooks/, ...)
HOOK_LINE="uv run python .cursor/hooks/g-hk-graph-update.py"
grep -qF "$HOOK_LINE" "$HOOK_FILE" 2>/dev/null || { printf '%s\n' "$HOOK_LINE" >> "$HOOK_FILE"; chmod +x "$HOOK_FILE"; }
Re-running setup does not duplicate the line; the hook exits 0 on all platforms even if indexing fails. See the Codebase Graph (gald3r_muninn) section below.
.gald3r/PROJECT.md and confirm mission and goals.gald3r/subsystems/ for accuracy.gald3r/PLAN.md and Feature under features/ as needed@g-project (Project Linking section)) when readyskill_packs/ directory — run .\skill_packs\{pack}\install.py for infrastructure, ai-ml-dev, startup-tools, and other packsThe codebase graph (gald3r_muninn) indexes Python and TypeScript/JavaScript source so g-go-code Step b0 Impact Scan can answer "what breaks if I change this file?" with real import/call edges instead of a linear grep. It is optional — when absent, Step b0 falls back to ripgrep (non-blocking).
What it does: builds a local SQLite graph at ~/.gald3r/muninn.db (override with MUNINN_DB_PATH). graph_impact / graph_callers / graph_callees / graph_deps / graph_status query it.
How to initialize (step 8b above): run the Python + TypeScript indexers once, then let the post-commit hook (g-hk-graph-update.py) refresh changed files on every commit.
OS support matrix (clean-room rewrite — supersedes the WSL-only GitNexus):
| OS | Python indexer | TypeScript indexer | Notes |
|---|---|---|---|
| Windows | ✅ native | ✅ native (needs Node.js) | No WSL2/Docker required |
| macOS | ✅ native | ✅ native (needs Node.js) | — |
| Linux | ✅ native | ✅ native (needs Node.js) | — |
If a runtime (Python / Node.js) is missing, skip that indexer — the graph simply indexes the languages it can, and Step b0 falls back to ripgrep for the rest. Initialization, the post-commit hook, and the gald3r_install post-install offer are all non-blocking.
setup_gald3r_project.ps1)gald3r has two distinct setup entry points with non-overlapping responsibilities. They are not alternatives that ask the same questions twice:
| Entry point | Owns | Does NOT do |
|---|---|---|
setup_gald3r_project.ps1 (root installer, run from a shell) | Platform selection (-Platforms, the interactive platform picker, -Platform all), copying the .gald3r_sys/ payload + per-platform IDE dirs into the target, section-marker merge of AGENTS.md/CLAUDE.md/.gitignore, JSON key-merge of platform config, and v1/v2/v3 version detection on upgrade | Author project mission/goals or scaffold the .gald3r/ control plane content |
@g-setup (this skill, run in-session) | The .gald3r/ control-plane scaffold — folder layout, PROJECT.md/PLAN.md/CONSTRAINTS.md/SUBSYSTEMS.md, identity files, subsystem detection, codebase-graph init offer | Platform selection — it does not re-prompt for or deploy IDE platform dirs |
Design decision (T1209 AC6 / T1275): @g-setup delegates platform selection to the root installer; it does not re-prompt in-session. The platform picker (-Platforms / interactive prompt in setup_gald3r_project.ps1) is the single source of truth for which IDE surfaces (.cursor/, .claude/, .codex/, …) get deployed. Re-implementing a second platform prompt inside @g-setup would duplicate that logic and risk drift.
Recommended order for a brand-new project:
setup_gald3r_project.ps1 -TargetPath <dir> (it prompts for platforms if -Platforms is omitted) — this lays down .gald3r_sys/ + the chosen IDE platform dirs and merges the marker-managed root files.@g-setup in-session to scaffold and personalize the .gald3r/ control plane (mission, goals, subsystems, first task).If a user invokes @g-setup on a project that has no IDE platform dirs yet, point them at setup_gald3r_project.ps1 for platform deployment rather than prompting for platforms here.
The gald3r engine — a deterministic Mode-A core (no LLM calls) that the slimmed skills
call for state CRUD (tasks, bugs, features, prds, ideas, constraints, subsystems, release,
vault) and to serve the centralized judgment prompts — ships as a compiled binary, not
readable source (IP leak-stop, T1645). .gald3r_sys/engine/ in this install contains only
a stub README; the zero-IP resolver .gald3r_sys/scripts/gald3r_bin.py finds the engine
(GALD3R_BIN env var → gald3r on PATH → bundled .gald3r_sys/bin/ → dev source).
g-install-agent command (/g-install-agent
in Claude Code, @g-install-agent in Cursor) — it downloads the signed, SHA-256-verified
gald3r binary from the public Gald3r-Labs/gald3r_agent releases into the gald3r home
bin/ (T1615). Verify with gald3r --version.gald3r <verb> (or MCP gald3r_*).SKILL.full.md fallback — nothing points outside the install.