Plan-Marshall Infrastructure Configuration
Manages project-level infrastructure configuration in marshal.json, including skill domains, system settings, and plan default values.
name: plan-marshall-config description: Project-level infrastructure configuration for marshal.json allowed-tools: Read, Write, Edit, Bash
Plan-Marshall Config Skill
Manages project-level infrastructure configuration in .plan/marshal.json.
What This Skill Provides
- Skill Domains: Implementation skill defaults and optionals per domain
- System Settings: Retention and cleanup configuration
- Plan Defaults: Default values for new plans
When to Activate This Skill
Activate this skill when:
- Initializing project configuration (
/marshall-stewardwizard) - Querying implementation skills for a domain
- Managing retention settings
- Configuring plan defaults
Workflow: Initialize Configuration
Pattern: Script Automation
Initialize marshal.json with defaults.
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config init
Workflow: Query Skill Domains
Pattern: Read-Process-Write
Get implementation skills for a specific domain.
Get Domain Defaults
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
skill-domains get-defaults --domain java-core
Output:
status: success
domain: java-core
defaults[1]:
- pm-dev-java:java-core
Get Domain Optionals
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
skill-domains get-optionals --domain java-implementation
Validate Skill in Domain
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
skill-domains validate --domain java-core --skill pm-dev-java:java-lombok
Workflow: System Settings
Pattern: Read-Process-Write
Manage system-level infrastructure settings.
Get Retention Settings
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
system retention get
Set Retention Field
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
system retention set --field logs_days --value 7
Workflow: Plan Defaults
Pattern: Read-Process-Write
Manage default values for new plans.
List Plan Defaults
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
plan defaults list
Get Specific Default
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
plan defaults get --field commit_strategy
Set Default Value
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
plan defaults set --field create_pr --value true
API Reference
Noun: skill-domains
| Verb | Parameters | Purpose |
|------|------------|---------|
| list | (none) | List all domains |
| get | --domain | Get full domain config (returns nested structure for technical domains) |
| get-defaults | --domain | Get default skills (returns core.defaults for nested domains) |
| get-optionals | --domain | Get optional skills (returns core.optionals for nested domains) |
| set | --domain [--profile] [--defaults] [--optionals] | Set domain config (use --profile for nested domains) |
| add | --domain --defaults [--optionals] | Add new domain |
| validate | --domain --skill | Check if skill valid (searches all profiles for nested domains) |
| detect | (none) | Auto-detect domains from project files |
| get-extensions | --domain | Get workflow skill extensions for domain |
| set-extensions | --domain --type --skill | Set workflow skill extension (types: outline, triage) |
| get-available | (none) | Get available domains based on detected build systems |
| configure | --domains | Configure selected domains with templates |
resolve-domain-skills
| Parameters | Purpose |
|------------|---------|
| --domain --profile | Resolve skills for domain and profile (aggregates {domain}.core + {domain}.{profile}) |
Standard profiles: implementation, testing, quality.
resolve-workflow-skill
| Parameters | Purpose |
|------------|---------|
| --phase | Resolve system workflow skill for phase (init, outline, plan, execute, finalize) |
Always returns from the system domain's workflow_skills.
resolve-workflow-skill-extension
| Parameters | Purpose |
|------------|---------|
| --domain --type | Resolve domain-specific workflow extension (types: outline, triage) |
Returns null (not error) if extension doesn't exist for the domain.
get-workflow-skills
| Parameters | Purpose | |------------|---------| | (none) | Get all workflow skills from system domain (5-phase model: init, outline, plan, execute, finalize) |
Noun: system
| Verb | Parameters | Purpose |
|------|------------|---------|
| retention get | (none) | Get all retention settings |
| retention set | --field --value | Set retention field |
Noun: plan
| Verb | Parameters | Purpose |
|------|------------|---------|
| defaults list | (none) | List all plan defaults |
| defaults get | --field | Get default value |
| defaults set | --field --value | Set default value |
Noun: ci
| Verb | Parameters | Purpose |
|------|------------|---------|
| get | (none) | Get full CI config |
| get-provider | (none) | Get CI provider and repo URL |
| get-tools | (none) | Get authenticated tools list |
| set-provider | --provider --repo-url | Set CI provider |
| set-tools | --tools | Set authenticated tools (comma-separated) |
init
python3 .plan/execute-script.py plan-marshall:plan-marshall-config:plan-marshall-config \
init [--force]
Data Model
marshal.json Location
.plan/marshal.json
Structure
The defaults template contains only system domain. Technical domains (java, javascript, etc.) are added during project initialization based on detection or manual configuration.
Example (Java project after init):
{
"skill_domains": {
"system": {
"defaults": ["plan-marshall:general-development-rules"],
"optionals": ["plan-marshall:diagnostic-patterns"],
"workflow_skills": {
"1-init": "pm-workflow:phase-1-init",
"2-outline": "pm-workflow:phase-2-outline",
"3-plan": "pm-workflow:phase-3-plan",
"4-execute": "pm-workflow:phase-4-execute",
"5-finalize": "pm-workflow:phase-5-finalize"
}
},
"java": {
"workflow_skill_extensions": {
"outline": "pm-dev-java:java-outline-ext",
"triage": "pm-dev-java:ext-triage-java"
},
"core": {
"defaults": ["pm-dev-java:java-core"],
"optionals": ["pm-dev-java:java-null-safety", "pm-dev-java:java-lombok"]
},
"implementation": {
"defaults": [],
"optionals": ["pm-dev-java:java-cdi", "pm-dev-java:java-maintenance"]
},
"testing": {
"defaults": ["pm-dev-java:junit-core"],
"optionals": ["pm-dev-java:junit-integration"]
},
"quality": {
"defaults": ["pm-dev-java:javadoc"],
"optionals": []
}
}
},
"system": {
"retention": {
"logs_days": 1,
"archived_plans_days": 5,
"memory_days": 5,
"temp_on_maintenance": true
}
},
"plan": {
"defaults": {
"compatibility": "deprecations",
"commit_strategy": "phase-specific",
"create_pr": false,
"verification_required": true,
"branch_strategy": "direct"
}
}
}
Standard Domains
System Domain
The system domain contains workflow skills (5-phase model) and base skills applied to all tasks.
| Field | Purpose |
|-------|---------|
| defaults | Base skills loaded for all tasks (plan-marshall:general-development-rules) |
| optionals | Optional base skills available for selection |
| workflow_skills | Maps 5 phases to workflow skill references |
Workflow Phases: init, outline, plan, execute, finalize
Technical Domains (Profile Structure)
Technical domains use nested structure with workflow_skill_extensions and profiles.
| Profile | Phase | Purpose |
|---------|-------|---------|
| core | all | Skills loaded for all profiles |
| implementation | execute | Production code tasks |
| testing | execute | Test code tasks |
| quality | finalize | Documentation, verification |
Available Domains:
| Domain | Core Defaults | Extensions |
|--------|---------------|------------|
| java | pm-dev-java:java-core | outline, triage |
| javascript | pm-dev-frontend:cui-javascript | outline, triage |
| plan-marshall-plugin-dev | pm-plugin-development:plugin-architecture | triage |
Use resolve-domain-skills --domain {domain} --profile {profile} to get aggregated skills.
Scripts
| Script | Notation |
|--------|----------|
| plan-marshall-config | plan-marshall:plan-marshall-config |
Script characteristics:
- Uses Python stdlib only (json, argparse, pathlib, xml.etree)
- Outputs TOON to stdout
- Exit code 0 for success, 1 for errors
- Supports
--helpflag
Integration Points
With plan-marshall Skill
- Called during wizard initialization
- Called from configuration menus
With Implementation Agents
skill-domains get-defaultsprovides skills to loadskill-domains get-optionalsprovides available optionals
With Cleanup
system retention getprovides retention settings
Error Handling
All operations validate prerequisites before proceeding:
status: error
error: marshal.json not found. Run command /marshall-steward first
Standard error conditions:
marshal.json not found- Run/marshall-stewardfirstskill_domains not configured- Run/marshall-stewardfirstUnknown domain: {name}- Domain doesn't exist
Related skills
Docker Compose Architect
Designs optimized Docker Compose configurations.
Incident Postmortem Writer
Writes structured and blameless incident postmortem reports.
Runbook Creator
Creates clear operational runbooks for common DevOps procedures.