
Bootstrap
- 74 installs
- 416 repo stars
- Updated August 5, 2026
- boshu2/agentops
Bootstrap is a skill that initializes AgentOps project files, including the .agents/ scaffolding, GOALS.md, and PRODUCT.md.
About
Bootstrap initializes AgentOps project files in a repository, creating the .agents/ scaffolding plus GOALS.md, PRODUCT.md, README.md, and PROGRAM.md. It detects whether the repo is bare, partial, or complete and fills only the missing pieces, delegating to the goals, product, and doc skills. Developers run it once to set up the AgentOps knowledge-store structure a repo needs before running the flywheel.
- Initializes AgentOps project scaffolding: .agents/, GOALS.md, PRODUCT.md, README.md
- Idempotent and progressive; existing artifacts are never overwritten
- Detects repo state (bare, partial, complete) and fills only the gaps
Bootstrap by the numbers
- 74 all-time installs (skills.sh)
- Ranked #1,481 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
bootstrap capabilities & compatibility
- Capabilities
- beads br · beads workflow
- Use cases
- documentation · project management
What bootstrap says it does
Initialize AgentOps project files.
Every step below is idempotent — existing artifacts are never overwritten.
Progressive — bare repos get the golden path first, existing repos fill gaps only.
npx skills add https://github.com/boshu2/agentops --skill bootstrapAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 74 |
|---|---|
| repo stars | ★ 416 |
| Last updated | August 5, 2026 |
| Repository | boshu2/agentops ↗ |
What it does
Initializing AgentOps project files and the .agents/ scaffolding in a repository, filling only the gaps.
Who is it for?
Setting up AgentOps scaffolding and product docs in a new or partially set up repo.
Skip if: Installing bd, which bootstrap only recommends and never installs on the user's behalf.
When should I use this skill?
Initializing AgentOps, bootstrapping project files, or setting up .agents scaffolding.
What you get
A .agents/ directory structure plus GOALS.md and PRODUCT.md, created idempotently.
- .agents/ directory structure
- GOALS.md
- PRODUCT.md
By the numbers
- 6 execution steps (0 through 6)
- 3 repo states (bare, partial, complete)
Files
/bootstrap
Quick Ref: Product/operations layer around the ao quick-start core seed. Progressive — bare repos get the golden path first, existing repos fill gaps only.YOU MUST EXECUTE THIS WORKFLOW. Do not just describe it.
Quick Start
/bootstrapThat is it. One command. Every step below is idempotent — existing artifacts are never overwritten.
External Tools
- ao (optional) — AgentOps CLI. Required only for optional hook activation (Step 6). Bootstrap skips hooks gracefully when missing.
- bd (optional, recommended) — beads CLI. Bootstrap probes for
bdin Step 0.5 and, when missing, points the user atscripts/install-bd.shwith a copy-paste command. Bootstrap never installsbdon the user's behalf.
Flags
| Flag | Effect |
|---|---|
--dry-run | Report what would be created without doing anything |
--force | Recreate artifacts even if they already exist |
Execution Steps
Step 0: Detect Repo State
git rev-parse --is-inside-work-tree >/dev/null 2>&1 || { echo "NOT_A_GIT_REPO"; exit 1; }
HAS_GOALS=$([[ -f GOALS.md ]] && echo true || echo false)
HAS_PRODUCT=$([[ -f PRODUCT.md ]] && echo true || echo false)
HAS_README=$([[ -f README.md ]] && echo true || echo false)
HAS_PROGRAM=$([[ -f PROGRAM.md || -f AUTODEV.md ]] && echo true || echo false)
HAS_AGENTS=$([[ -d .agents ]] && echo true || echo false)
HAS_HOOKS=$(grep -q "agentops" .claude/settings.json 2>/dev/null && echo true || echo false)
HAS_AO=$(command -v ao >/dev/null && echo true || echo false)
HAS_BD=$(command -v bd >/dev/null && echo true || echo false)Classify the repo:
| State | Condition |
|---|---|
| bare | No GOALS.md, no PRODUCT.md, no .agents/ |
| partial | Some artifacts present, some missing |
| complete | GOALS.md, PRODUCT.md, README.md, PROGRAM.md/AUTODEV.md, and .agents/ present |
If --dry-run is set: report the state and what would be created, including whether bd would be recommended (when HAS_BD is false), then stop. Do not proceed to Steps 1-6.
If the repo is complete and --force is not set: report "Repo is fully bootstrapped. Nothing to do." and stop.
Step 0.5: Recommend bd
If HAS_BD is true: skip. Report "bd: present."
If HAS_BD is false: report "bd: not installed (recommended). Install with: `bash scripts/install-bd.sh`" and continue. Bootstrap does NOT run the installer — bd is optional, the user decides.
If scripts/install-bd.sh is absent at the repo root, drop the install hint and just report "bd: not installed (recommended). See https://github.com/steveyegge/beads".
Step 1: GOALS.md
If HAS_GOALS is false (or --force is set):
Run the goals skill to initialize GOALS.md interactively:
Skill(skill="goals", args="init")If HAS_GOALS is true and --force is not set: skip. Report "GOALS.md exists -- skipped."
Step 2: PRODUCT.md
If HAS_PRODUCT is false (or --force is set):
Run the product skill to generate PRODUCT.md interactively:
Skill(skill="product")If HAS_PRODUCT is true and --force is not set: skip. Report "PRODUCT.md exists -- skipped."
Step 3: README.md
If HAS_README is false (or --force is set) AND PRODUCT.md now exists:
Run the doc skill in README mode to generate README.md:
Skill(skill="doc", args="--mode=readme")If HAS_README is true and --force is not set: skip. Report "README.md exists -- skipped."
If PRODUCT.md does not exist (Step 2 was skipped or failed): skip. Report "README.md skipped -- PRODUCT.md required first."
Step 4: Core Seed and .agents/ Structure
If HAS_AGENTS is false (or --force is set):
Prefer the CLI golden path:
ao quick-start --no-beadsIf ao is unavailable, create the minimal directory structure and report the exact command to repair later:
mkdir -p .agents/learnings .agents/council .agents/research .agents/plans .agents/rpi .agents/patterns .agents/retro .agents/handoffCreate .agents/AGENTS.md if it does not exist:
# Agent Knowledge Store
This directory contains accumulated knowledge from agent sessions.
## Structure
| Directory | Purpose |
|-----------|---------|
| `learnings/` | Extracted lessons and patterns |
| `council/` | Council validation artifacts |
| `research/` | Research phase outputs |
| `plans/` | Implementation plans |
| `rpi/` | RPI execution packets and phase logs |
## Usage
Knowledge is automatically managed by the AgentOps flywheel:
- `/inject` surfaces relevant prior knowledge at session start
- `/post-mortem` extracts and processes new learnings
- `/compile` runs maintenance (mine, grow, defrag)If HAS_AGENTS is true and --force is not set: skip. Report ".agents/ exists -- skipped."
If ao is unavailable after fallback creation: report "Core seed repair command: ao quick-start --dry-run after installing ao."
Step 5: PROGRAM.md / AUTODEV.md
If HAS_PROGRAM is false (or --force is set):
Use the existing autodev CLI path:
ao autodev init "your current objective"If ao is unavailable: do not create a placeholder. Report "PROGRAM.md skipped -- install ao, then run: ao autodev init \"your current objective\"."
If HAS_PROGRAM is true and --force is not set: skip. Report "PROGRAM.md/AUTODEV.md exists -- skipped."
Step 6: Optional Hook Activation
Do not activate runtime agent hooks. AgentOps 3.0 is runtime-hookless: ao quick-start, execution packets, explicit validation, and knowledge compounding deliver first value without Claude/Codex runtime hooks. Routine release authority is the local cockpit gate (ao gate check plus the installed Git pre-push/pawl proof path); GitHub Actions are PR/tag/manual backstop telemetry. There is no ao command or flag that installs runtime hooks — hooks were removed from the CLI.
If the user explicitly requests hooks, they are opt-in and author-it-yourself: point them at the hooks-authoring skill, which scaffolds project-local hooks into .claude/settings.json. Bootstrap itself never writes hooks.
If hooks were not explicitly requested: skip. Report "Runtime hooks optional -- skipped. AgentOps 3.0 is runtime-hookless; routine release authority is the local cockpit gate. To author your own, use the hooks-authoring skill."
If HAS_HOOKS is true: report "Hooks already present in .claude/settings.json -- left untouched."
Step 7: Report
Output a summary table:
Bootstrap complete.
| Artifact | Status |
|---------------|---------|
| GOALS.md | created / skipped / failed |
| PRODUCT.md | created / skipped / failed |
| README.md | created / skipped / failed |
| PROGRAM.md | created / skipped / failed |
| .agents/ | created / skipped / failed |
| Hooks | optional / activated / skipped / failed |
| bd | present / recommended (not installed) |
Repo is now AgentOps-ready. Next: /rpi "your first goal"Examples
Bare Repo
User says: /bootstrap
What happens: Agent detects no AgentOps artifacts. Runs /goals init, /product, /doc --mode=readme, creates .agents/ structure, leaves hooks optional. Reports all five core artifacts created.
Partial Repo (has GOALS.md and .agents/)
User says: /bootstrap
What happens: Agent detects existing artifacts. Skips GOALS.md and .agents/. Runs /product, /doc --mode=readme. Leaves hooks optional unless explicitly requested. Reports two created, three skipped.
Dry Run
User says: /bootstrap --dry-run
What happens: Agent detects repo state and reports what would be created. No files are written.
Troubleshooting
| Problem | Cause | Solution |
|---|---|---|
| "Not a git repo" | No .git directory | Run git init first |
| Goals skill fails | No project context | Provide a one-line project description when prompted |
| Product skill fails | No goals defined | Run /goals init manually first, then re-run /bootstrap |
| Hooks not activating | ao CLI not installed | Install: brew tap boshu2/agentops https://github.com/boshu2/homebrew-agentops && brew install agentops |
| bd not installed | Recommended but optional | Install with bash scripts/install-bd.sh if you want issue tracking; otherwise ignore |
| Want to start over | Existing artifacts blocking | Use --force to recreate all artifacts |
See Also
- goals -- Fitness specification and directive management
- product -- Product definition generation
- doc -- README generation (
--mode=readme) + repo docs - status -- New user onboarding (lighter than bootstrap)
- related operator runbooks -- host-hygiene runbooks (PATH rationalization, etc.)
Reference Documents
- references/bootstrap.feature — Executable spec: bare repo gets golden path, existing repo fills gaps only, idempotent never-overwrite (soc-qk4b)
# Executable spec for the /bootstrap skill — project initialization (driving-adapter).
# /bootstrap is the product/operations layer around the `ao quick-start` seed: it initializes
# AgentOps project files PROGRESSIVELY (a bare repo gets the golden path; an existing repo only
# fills gaps) and IDEMPOTENTLY (it never overwrites an existing artifact). Hexagon:
# driving-adapter; consumes goals + product + readme + shared. (soc-qk4b)
Feature: Bootstrap initializes AgentOps project files idempotently
As repo setup
I want the project files seeded progressively and without clobbering anything
So that both bare and established repos reach a complete AgentOps baseline safely
Scenario: a bare repo gets the golden path
Given a repo with no AgentOps project files
When /bootstrap runs
Then it seeds the golden-path project files
Scenario: an existing repo only fills gaps
Given a repo that already has some AgentOps artifacts
When /bootstrap runs
Then it adds only the missing artifacts and leaves existing ones untouched
Scenario: bootstrap is idempotent
When /bootstrap runs twice
Then the second run overwrites nothing and produces no spurious changes
Related Operator Runbooks
Bootstrap touches .agents/ state and bd state (and shell rc files only via PATH hygiene, not hook activation — AgentOps 3.0 is hookless). These runbooks cover the operator-side hygiene that bootstrap assumes is healthy on entry. Read the relevant entry when bootstrap reports an unexpected skip, when the operator's environment looks suspicious, or when handing a fresh host to a new agent.
Index
docs/runbooks/path-rationalization.md
Audits and cleans shell PATH pollution across .bashrc, .zshrc, .zshenv, .profile, .zprofile, and .bash_profile. Walks through inventory, classification, idempotent prepends, subshell verification, and rollback from a timestamped backup.
When to read: The host has accumulated many PATH entries, which ao or which bd resolves to a stale or temp-dir copy, shells are slow to start, or a previous installer has left /tmp/*-install lines in an rc file. Run before bootstrap on a long-lived host where the operator has not pruned PATH in a while.
Adding a runbook to this list
When a new runbook lands under docs/runbooks/, add a sub-section above with a one-paragraph description and an explicit "When to read" line. Keep entries scoped to runbooks bootstrap callers actually need — operational concerns adjacent to repo initialization, host hygiene, or the rc files bootstrap may end up touching.
---
Pattern adopted from path-rationalization (ACFS skill corpus). Methodology only — no verbatim text.#!/usr/bin/env bash
set -euo pipefail
SKILL_DIR="$(cd "$(dirname "$0")/.." && pwd)"
PASS=0; FAIL=0
check() { if bash -c "$2"; then echo "PASS: $1"; PASS=$((PASS + 1)); else echo "FAIL: $1"; FAIL=$((FAIL + 1)); fi; }
check "SKILL.md exists" "[ -f '$SKILL_DIR/SKILL.md' ]"
check "SKILL.md has YAML frontmatter" "head -1 '$SKILL_DIR/SKILL.md' | grep -q '^---$'"
check "SKILL.md has name: bootstrap" "grep -q '^name: bootstrap' '$SKILL_DIR/SKILL.md'"
check "SKILL.md mentions GOALS.md" "grep -q 'GOALS\\.md' '$SKILL_DIR/SKILL.md'"
check "SKILL.md mentions PRODUCT.md" "grep -q 'PRODUCT\\.md' '$SKILL_DIR/SKILL.md'"
check "SKILL.md mentions PROGRAM/AUTODEV" "grep -Eq 'PROGRAM\\.md|AUTODEV\\.md' '$SKILL_DIR/SKILL.md'"
check "SKILL.md delegates core seed to quick-start" "grep -q 'ao quick-start' '$SKILL_DIR/SKILL.md'"
check "SKILL.md mentions progressive/gap-filling behavior" "grep -qiE 'progressive|fills? gaps|idempotent' '$SKILL_DIR/SKILL.md'"
echo ""; echo "Results: $PASS passed, $FAIL failed"
[ $FAIL -eq 0 ] && exit 0 || exit 1
{
"name": "bootstrap",
"form": "A",
"summary": "Initialize AgentOps project files — the product/operations layer around the `ao quick-start` core seed. Progressive and idempotent: bare repos get the golden path, existing repos fill gaps only; never overwrites.",
"sections": [
{ "id": "title", "title": "/bootstrap", "type": "header", "priority": "high" },
{ "id": "quick-start", "title": "Quick Start", "type": "overview", "priority": "high" },
{ "id": "external-tools", "title": "External Tools", "type": "constraints", "priority": "medium" },
{ "id": "flags", "title": "Flags", "type": "reference", "priority": "medium" },
{ "id": "execution-steps", "title": "Execution Steps", "type": "methodology", "priority": "high" },
{ "id": "examples", "title": "Examples", "type": "examples", "priority": "medium" },
{ "id": "troubleshooting", "title": "Troubleshooting", "type": "troubleshooting", "priority": "medium" },
{ "id": "see-also", "title": "See Also", "type": "routing", "priority": "low" },
{ "id": "reference-documents", "title": "Reference Documents", "type": "routing", "priority": "low" }
],
"references": [
{ "path": "references/related-runbooks.md", "intent": "read", "description": "Host-hygiene operator runbooks (PATH rationalization, etc.)." },
{ "path": "references/bootstrap.feature", "intent": "read", "description": "Executable spec: bare repo gets golden path, existing repo fills gaps only, idempotent never-overwrite." }
],
"scripts": [
{ "path": "scripts/install-bd.sh", "intent": "execute", "description": "Optional bd installer the user invokes themselves; bootstrap only recommends it." }
],
"metadata": {
"tier": "session",
"stability": "stable",
"hexagonal_role": "driving-adapter",
"dependencies": ["goals", "product", "doc", "shared"],
"triggers": [
"/bootstrap",
"initialize agentops",
"bootstrap this repo",
"set up agentops project files",
"make this repo agentops-ready",
"/bootstrap --dry-run",
"/bootstrap --force"
],
"token_estimate": {
"minimal": 120,
"overview": 360,
"standard": 1200,
"full": 1800
}
},
"produces": [".agents/ directory structure", "GOALS.md", "PRODUCT.md"],
"consumes": ["goals", "product", "doc", "shared"],
"context_rel": [],
"quality_score": 0.92,
"evidence": {
"sources": [
"skills/bootstrap/SKILL.md",
"skills/bootstrap/references/bootstrap.feature"
]
}
}