| name | genaipm-claw |
| description | Install the GenAI PM Claw — turn your NanoClaw into a PM operating system with 16 skills, daily brief, Command Center, and memory. Asks 5 questions, configures everything. Use when user says "/genaipm-claw", "install PM OS", "PM setup", or wants to add PM capabilities. |
GenAI PM Claw — Installer
Transform any NanoClaw instance into an AI-powered PM operating system.
What gets installed:
- PM-optimized CLAUDE.md for your main group (or any group)
- 16 PM slash commands (decisions, retros, PRDs, prioritization, etc.)
- Daily Brief engine with optional GenAI PM + Agent Vitamins integrations
- Command Center (HTML dashboard) with KPI tiles, initiative kanban, decision log
- Memory structure with Compiled Truth + Timeline wiki pattern
Phase 1: Pre-flight
Check if already installed
ls container/skills/pm-setup/SKILL.md 2>/dev/null
If the file exists, tell the user:
"GenAI PM Claw is already installed. Run /pm-setup to reconfigure, or /pm-skills to see available commands."
Then STOP — do not re-install.
Check NanoClaw is set up
test -f store/messages.db && echo "OK" || echo "NOT_SETUP"
If NOT_SETUP:
"NanoClaw isn't set up yet. Run /setup first, then come back to /genaipm-claw."
Then STOP.
Determine target group
Ask the user:
"Which group should become your PM command center? (default: main)"
Read registered groups:
npx tsx -e "
const Database = require('better-sqlite3');
const db = new Database('store/messages.db');
const groups = db.prepare('SELECT name, folder, is_main FROM registered_groups').all();
groups.forEach(g => console.log(g.is_main ? '→ ' + g.name + ' (main)' : ' ' + g.name));
"
Default to the main group. Store the target folder name.
Phase 2: Collect PM Configuration
Ask these 5 questions (collect all answers before proceeding):
1. "What's your name?"
Store as user_name.
2. "What's your #1 goal right now? (the thing that matters most)"
Store as top_goal. Examples: "Launch V2 by June", "Hit 2,000 DAU", "Close Series A".
3. "What 2-4 KPIs do you track? (with current values if you know them)"
Store as kpis[]. Parse into {name, current, target} objects.
4. "What are your active initiatives? (projects you're working on)"
Store as initiatives[]. Parse into {name, status, goal} objects.
5. "Optional: Do you subscribe to GenAI PM (genaipm.com) or Agent Vitamins (agentvitamins.com)?"
- GenAI PM email →
genaipm_email, set genaipm_enabled: true
- AV token →
agent_vitamins_token, set agent_vitamins_enabled: true
- Neither is fine — these are optional enhancements
Write answers to groups/{target_folder}/pm-config.json.
Phase 3: Apply Code Changes
Step 1: Merge the genaipm-claw repo
git remote get-url pmclaw 2>/dev/null || git remote add pmclaw https://github.com/menkesu/genaipm-claw.git
git fetch pmclaw main
git merge pmclaw/main --allow-unrelated-histories --no-edit
If there are merge conflicts, help the user resolve them. The PM layer only adds new files under container/skills/pm-* and groups/global/pm-template/ — it should not conflict with existing NanoClaw code.
Step 2: Validate
ls container/skills/pm-setup/SKILL.md && echo "✅ Container skills installed"
ls groups/global/pm-template/CLAUDE.md.template && echo "✅ PM template available"
npm run build 2>&1 | tail -5
Phase 4: Configure the PM OS
Step 1: Run the setup script
cd groups/{target_folder}
python3 /workspace/project/groups/global/pm-template/skills/daily-brief/setup.py \
--config pm-config.json \
--template /workspace/project/groups/global/pm-template/CLAUDE.md.template \
--output CLAUDE.md
This generates:
CLAUDE.md — hydrated with user's goals, KPIs, initiatives
hq/hq-config.json — Command Center panel config
hq/initiatives.json — initiative tracker
hq/metrics.json — KPI data
hq/decisions/ — decision log directory
memory/ — wiki structure with schema
Step 2: Copy the Command Center
cp /workspace/project/groups/global/pm-template/hq/index.html groups/{target_folder}/hq/index.html
Step 3: Copy the daily brief engine
cp /workspace/project/groups/global/pm-template/skills/daily-brief/daily-brief.py \
groups/{target_folder}/skills/daily-brief/daily-brief.py
cp /workspace/project/groups/global/pm-template/skills/daily-brief/precheck.py \
groups/{target_folder}/skills/daily-brief/precheck.py
Step 4: Rebuild container (to pick up new container skills)
./container/build.sh
Phase 5: Schedule & Verify
Schedule the daily brief
TZ=$(grep TZ .env | cut -d= -f2 | tr -d '"')
echo "Scheduling daily brief for 8:00 AM $TZ"
Use the NanoClaw MCP tool to schedule:
schedule_task(
prompt="Run /daily-brief and send the morning brief to the chat.",
schedule_type="cron",
schedule_value="0 8 * * *"
)
Verify installation
Run a quick test:
echo "Checking PM skills..."
for skill in pm-setup pm-decision pm-retro pm-prioritize pm-prd pm-stakeholder-update \
pm-metrics pm-energy-audit pm-launch-checklist pm-competitive \
pm-interview-guide pm-add-module pm-skills daily-brief \
one-step-better-ai-pm av-improve; do
test -f container/skills/$skill/SKILL.md && echo " ✅ /$skill" || echo " ❌ /$skill MISSING"
done
Report success
🎉 GenAI PM Claw installed!
Your PM OS is now running. Here's what you have:
Top Goal: {top_goal}
KPIs: {count} tracked
Initiatives: {count} active
Skills: 16 PM commands available
Daily Brief: Scheduled for 8:00 AM
Quick start:
/daily-brief — get your morning brief now
/pm-decision — log your first decision
/pm-skills — see all available commands
Optional upgrades:
- GenAI PM (free) — get daily AI PM insights → genaipm.com
- Agent Vitamins ($7/mo) — your agent improves itself daily → agentvitamins.com
Troubleshooting
Container skills not appearing
Rebuild the container: ./container/build.sh
Daily brief not firing
Check scheduled tasks: use the list_tasks MCP tool.
Updating the PM layer
git fetch pmclaw main
git merge pmclaw/main --no-edit
./container/build.sh
Merge conflicts
The PM layer only adds new files — conflicts are rare. If they occur, accept the incoming changes for any container/skills/ or groups/global/pm-template/ files.
Re-running setup
Run /pm-setup inside the chat to reconfigure. It will regenerate CLAUDE.md and data files from pm-config.json.