Agent skill

gmacko-init-bootstrap

Use when (1) PROJECT_MANIFEST.json and INITIAL_PLAN.md exist, (2) ready to execute setup.sh to initialize the project, (3) renaming template to project name. Wraps setup.sh with preflight checks and validation.

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/gmacko-init-bootstrap

Metadata

Additional technical details for this skill

tier
workhorse
phase
initialization
permission
ask

SKILL.md

Gmacko Bootstrap Executor

Execute scripts/setup.sh to initialize the project from the template.

Prerequisites

  • PROJECT_MANIFEST.json must exist
  • INITIAL_PLAN.md should exist (run gmacko-init-plan first)
  • Git working directory should be clean

Workflow

dot
digraph bootstrap {
    rankdir=TB;
    node [shape=box];
    
    start [label="Start" shape=ellipse];
    preflight [label="1. Preflight Checks"];
    confirm [label="2. Confirm Execution"];
    approved [label="Approved?" shape=diamond];
    execute [label="3. Execute setup.sh"];
    validate [label="4. Validate Results"];
    valid [label="Valid?" shape=diamond];
    handoff [label="5. Write Handoff"];
    done [label="Bootstrap Complete" shape=ellipse];
    abort [label="Aborted" shape=ellipse];
    fix [label="Fix Issues"];
    
    start -> preflight -> confirm -> approved;
    approved -> execute [label="yes"];
    approved -> abort [label="no"];
    execute -> validate -> valid;
    valid -> handoff [label="yes"];
    valid -> fix [label="no"];
    fix -> validate;
    handoff -> done;
}

Execution Steps

Step 1: Preflight Checks

Run these checks and report status:

bash
# Check 1: PROJECT_MANIFEST.json exists
[ -f "PROJECT_MANIFEST.json" ] && echo "OK: Manifest found" || echo "FAIL: Manifest missing"

# Check 2: Git is clean (no uncommitted changes)
[ -z "$(git status --porcelain)" ] && echo "OK: Git clean" || echo "WARN: Uncommitted changes"

# Check 3: Node.js installed
node --version && echo "OK: Node.js found" || echo "FAIL: Node.js missing"

# Check 4: pnpm installed
pnpm --version && echo "OK: pnpm found" || echo "FAIL: pnpm missing"

# Check 5: Read project name from manifest
PROJECT_NAME=$(node -p "require('./PROJECT_MANIFEST.json').project.name")
echo "Project name: $PROJECT_NAME"

# Check 6: Determine if mobile is needed
MOBILE=$(node -p "require('./PROJECT_MANIFEST.json').platforms.mobile")
echo "Mobile platform: $MOBILE"

Report preflight summary:

PREFLIGHT CHECKS
================
[OK] PROJECT_MANIFEST.json found
[OK] Git working directory clean
[OK] Node.js v20.x installed
[OK] pnpm 9.x installed

Project: acme-saas
Mobile: false (will use --no-mobile flag)

Step 2: Confirm Execution

IMPORTANT: This step requires user confirmation because it makes irreversible changes.

Tell the user:

I'm about to run scripts/setup.sh which will:

  1. Rename all @repo/* packages to @{project-name}/*
  2. Update app metadata (titles, descriptions)
  3. Remove the template's git history
  4. Initialize a fresh git repository
  5. Delete node_modules and reinstall dependencies

This cannot be undone.

Shall I proceed? (yes/no)

Step 3: Execute setup.sh

On user confirmation, execute:

bash
# Build the command
PROJECT_NAME=$(node -p "require('./PROJECT_MANIFEST.json').project.name")
MOBILE=$(node -p "require('./PROJECT_MANIFEST.json').platforms.mobile")

if [ "$MOBILE" = "false" ]; then
  ./scripts/setup.sh "$PROJECT_NAME" --no-mobile
else
  ./scripts/setup.sh "$PROJECT_NAME"
fi

Monitor output and report progress:

  • Package scope renamed
  • App metadata updated
  • Dependencies cleaned
  • Fresh install running
  • Git repository initialized

Step 4: Validate Results

After setup completes, run validation:

bash
# Validation 1: Check package.json has correct name
node -p "require('./package.json').name" | grep -q "$PROJECT_NAME" && echo "OK: Root package renamed"

# Validation 2: Type check passes
pnpm typecheck && echo "OK: Type check passed" || echo "FAIL: Type errors"

# Validation 3: Lint passes
pnpm lint && echo "OK: Lint passed" || echo "FAIL: Lint errors"

# Validation 4: Build succeeds
pnpm build && echo "OK: Build succeeded" || echo "FAIL: Build failed"

# Validation 5: Git repo initialized
[ -d ".git" ] && echo "OK: Git initialized" || echo "FAIL: Git missing"

Report validation summary:

VALIDATION RESULTS
==================
[OK] Package renamed to @acme-saas/*
[OK] Type check passed (0 errors)
[OK] Lint passed (0 warnings)
[OK] Build succeeded
[OK] Git repository initialized

Bootstrap successful!

If validation fails, report errors and suggest fixes.

Step 5: Write Handoff Document

Write docs/ai/handoffs/init-bootstrap.md:

markdown
# Initialization Handoff: Bootstrap Complete

## Timestamp
[ISO timestamp]

## Status
- [x] Preflight checks passed
- [x] setup.sh executed successfully
- [x] Validation passed

## Changes Made
- Renamed `@repo/*` to `@{project-name}/*`
- Updated app titles and metadata
- Removed template git history
- Initialized fresh git repository
- Installed dependencies

## Validation Results
- Type check: PASSED
- Lint: PASSED
- Build: PASSED

## Next Steps
- [ ] Run `gmacko-init-provision` to configure external services
- [ ] Create initial commit with project files
- [ ] Push to gmacko/{project-name} repository

## Notes
[Any warnings or issues encountered]

Post-Bootstrap Actions

After bootstrap completes, suggest:

Bootstrap complete! Next steps:

  1. Review the changes: Check package.json and app files
  2. Provision services: Run the gmacko-init-provision skill
  3. Create initial commit:
    bash
    git add .
    git commit -m "Initial commit: {project-name}"
    
  4. Push to GitHub:
    bash
    gh repo create gmacko/{project-name} --private --source=. --push
    

Red Flags

Rationalization Correction
"I'll skip the confirmation, it's just a rename" ALWAYS require explicit "yes" before setup.sh
"Validation failed but it's probably fine" STOP: Fix all validation errors before proceeding
"I'll skip typecheck to save time" NEVER skip validation; it catches real issues
"Git is dirty but I'll proceed anyway" WARN user; recommend committing first

Error Handling

setup.sh fails

  1. Check error output
  2. Common issues:
    • Invalid project name (must be lowercase, alphanumeric, hyphens)
    • Disk space issues
    • Permission problems
  3. Suggest fix and retry

Validation fails

  1. Report specific failure
  2. For type errors: Run pnpm typecheck and show errors
  3. For lint errors: Run pnpm lint --fix if auto-fixable
  4. For build errors: Check for missing dependencies

Dependencies

  • Requires: PROJECT_MANIFEST.json, scripts/setup.sh
  • Produces: Renamed project, docs/ai/handoffs/init-bootstrap.md
  • Next skill: gmacko-init-provision

Didn't find tool you were looking for?

Be as detailed as possible for better results