Programmer Agent System: - Add programmer-orchestrator (Opus) for workflow coordination - Add code-planner (Sonnet) for design and planning - Add code-implementer (Sonnet) for writing code - Add code-reviewer (Sonnet) for quality review - Add /programmer command and project registration skill - Add state files for preferences and project context Agent Infrastructure: - Add master-orchestrator and linux-sysadmin agents - Restructure skills to use SKILL.md subdirectory format - Convert workflows from markdown to YAML format - Add commands for k8s and sysadmin domains - Add shared state files (model-policy, autonomy-levels, system-instructions) - Add PA memory system (decisions, preferences, projects, facts) Cleanup: - Remove deprecated markdown skills and workflows - Remove crontab example (moved to workflows) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
/pa Personal Assistant — Revised Plan (2025-12-29)
Changes from Original Plan
| Decision | Original | Revised |
|---|---|---|
| Coexistence with direct commands | Not addressed | Both patterns work: /pa for routing, direct commands for known ops |
| Context level definitions | Specified levels | Abstract - PA interprets flexibly per request |
general-instructions.json owner |
master-orchestrator | PA writes directly |
general-instructions.json location |
state/ |
state/personal-assistant/ |
| Memory feature | Keep | Keep (JSON + UUID for efficiency/agent optimization) |
Goals
- Provide canonical entrypoint:
/pa - PA routes requests by domain+intent, delegates via
master-orchestrator - Configurable context-gathering (request/session/persistent override)
- Persistent, structured memory optimized for agent consumption
- Coexist with direct commands (
/deploy,/health, etc.)
Command Contract: /pa
File
~/.claude/commands/pa.md
Frontmatter
---
name: pa
description: Personal assistant entrypoint for routing and context-aware requests
aliases: [assistant, ask]
invokes: agent:personal-assistant
---
Parsing Rules
/pa <request>- natural language request/pa -- <request>---ends flag parsing, rest is literal
Flags
Context override (request-level, highest precedence):
/pa --context none|minimal|moderate|comprehensive -- <request>
Session override (ephemeral):
/pa --set-context none|minimal|moderate|comprehensive/pa --clear-context
Persistent default (durable, requires confirmation):
/pa --set-default-context none|minimal|moderate|comprehensive
Memory (PA writes directly):
/pa --remember -- "<instruction>"/pa --list-mem(active only)/pa --list-mem --all(includes deprecated)/pa --forget <uuid>
Introspection:
/pa --show-config/pa --help
Context Granularity
Resolution Precedence
- Request override:
--context <level> - Session override:
state/personal-assistant/session-context.json - Persistent default:
state/personal-assistant-preferences.json - Hard default:
moderate
Level Definitions
Abstract - PA interprets flexibly based on request type:
none- Skip context gatheringminimal- Light contextmoderate- Balanced (default)comprehensive- Deep context scan
Exact behavior evolves based on usage patterns.
State Files
PA-Owned State (state/personal-assistant/)
1. Session context override
- Path:
~/.claude/state/personal-assistant/session-context.json - Writer: user/CLI
- Resets on session end
{
"version": "1.0",
"current_context_level": "minimal",
"set_at": "2025-12-29T10:00:00Z",
"set_by": "user"
}
2. General instructions (memory)
- Path:
~/.claude/state/personal-assistant/general-instructions.json - Writer: PA directly
- Append-only with soft-delete
{
"version": "1.0",
"description": "User instructions optimized for agent consumption",
"items": [
{
"id": "uuid-here",
"text": "Prefer British spelling",
"scope": "global",
"tags": ["style"],
"created": "2025-12-29T10:00:00Z",
"status": "active"
}
]
}
Master-Orchestrator Owned State
3. Persistent PA preferences
- Path:
~/.claude/state/personal-assistant-preferences.json - Writer: master-orchestrator
{
"version": "1.0",
"description": "Persistent PA configuration",
"context_gathering": {
"default_level": "moderate"
}
}
Routing Behavior
PA Responsibilities
- Classify request by domain + intent
- Use conversation context to reduce ambiguity
- If still ambiguous: ask user (no guessing)
- Delegate execution to master-orchestrator
- Present unified result to user
Delegation
PA never delegates directly to domain agents. Always routes via master-orchestrator:
User → /pa <request>
↓
Personal Assistant (classify, gather context)
↓
Master Orchestrator (coordinate, enforce)
↓
Domain Agent (execute)
↓
Results bubble up
Coexistence with Direct Commands
Both patterns valid:
/pa deploy my-app→ PA classifies → routes → eventually runs deploy/deploy my-app→ Directly invokes deploy workflow
Direct commands are power-user shortcuts; /pa is conversational interface.
Documentation Updates
CLAUDE.md
Add to "Shared State Files" table:
state/personal-assistant-preferences.json| PA config | master-orchestratorstate/personal-assistant/session-context.json| Session context | user/CLIstate/personal-assistant/general-instructions.json| User memory | personal-assistant
State Schemas Doc
Add schemas for new files to ~/.claude/docs/state-schemas.md
Implementation Order
- Create
~/.claude/state/personal-assistant/directory - Create initial state files with defaults
- Create
~/.claude/commands/pa.md - Update
~/.claude/agents/personal-assistant.mdfor/pacontract - Update
~/.claude/CLAUDE.mdstate table - Update/create
~/.claude/docs/state-schemas.md - Manual validation per checklist
Validation Checklist
/pa -- --contexttreats--contextas literal text- Context precedence: request > session > persistent > default
--set-default-contextprompts for confirmation- K8s request routes correctly via master-orchestrator
- Sysadmin request routes correctly via master-orchestrator
- Ambiguous request triggers user clarification
--rememberadds to general-instructions.json--list-memshows active items--forget <uuid>marks as deprecated--list-mem --allshows deprecated items- Direct commands (
/deploy,/health) still work independently