Back to skills
extension
Category: AI Agent CapabilitiesNo API key required

manage-plan-marshall-config

Project-level infrastructure configuration for marshal.json

personAuthor: jakexiaohubgithub

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 Phase Configuration: Phase-specific settings (branching, compatibility, commit strategy, pipelines)

When to Activate This Skill

Activate this skill when:

  • Initializing project configuration (/marshall-steward wizard)
  • Querying implementation skills for a domain
  • Managing retention settings
  • Configuring plan phase settings

Workflow: Initialize Configuration

Pattern: Script Automation

Initialize marshal.json with defaults.

python3 .plan/execute-script.py plan-marshall:manage-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:manage-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:manage-plan-marshall-config:plan-marshall-config \
  skill-domains get-optionals --domain java-implementation

Validate Skill in Domain

python3 .plan/execute-script.py plan-marshall:manage-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:manage-plan-marshall-config:plan-marshall-config \
  system retention get

Set Retention Field

python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config \
  system retention set --field logs_days --value 7

Workflow: Plan Phase Configuration

Pattern: Read-Process-Write

Manage phase-specific plan configuration. Each phase has its own sub-noun.

Get Phase Configuration

python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config \
  plan phase-2-refine get

Get Specific Phase Field

python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config \
  plan phase-2-refine get --field compatibility

Set Phase Field

python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config \
  plan phase-5-execute set --field commit_strategy --value per_plan

Workflow: CI Command Lookup

Pattern: Lookup and Execute

Get a CI command by name, then execute with arguments.

Get CI Command

python3 .plan/execute-script.py plan-marshall:manage-plan-marshall-config:plan-marshall-config \
  ci get-command --name issue-view

Output:

status: success
name: issue-view
command: python3 .plan/execute-script.py plan-marshall:tools-integration-ci:github issue view

Execute the Command

Parse the command field from output, then execute with arguments:

python3 .plan/execute-script.py plan-marshall:tools-integration-ci:github issue view --issue 123

Available CI commands (registered via ci_health persist):

  • pr-create - Create pull request
  • pr-reviews - Get PR reviews
  • pr-comments - Get PR comments
  • ci-status - Check CI status
  • ci-wait - Wait for CI completion
  • issue-create - Create issue
  • issue-view - View issue details

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 (profiles read from extension.py, system domain only) | | 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, module_testing, integration_testing, quality.

resolve-workflow-skill

| Parameters | Purpose | |------------|---------| | --phase | Resolve system workflow skill for phase (init, refine, outline, plan, execute, verify, 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 (7-phase model) |

get-skills-by-profile

| Parameters | Purpose | |------------|---------| | --domain | Get skills organized by profile for architecture enrichment |

configure-task-executors

| Parameters | Purpose | |------------|---------| | (none) | Auto-discover profiles and register task executors (convention: profile X -> pm-workflow:task-X) |

resolve-task-executor

| Parameters | Purpose | |------------|---------| | --profile | Resolve task executor skill for a profile (e.g., implementation, module_testing) |

Noun: ext-defaults

| Verb | Parameters | Purpose | |------|------------|---------| | get | --key | Get extension default value | | set | --key --value | Set extension default value (always overwrites) | | set-default | --key --value | Set value only if key does not exist (write-once) | | list | (none) | List all extension defaults | | remove | --key | Remove extension default |

Noun: system

| Verb | Parameters | Purpose | |------|------------|---------| | retention get | (none) | Get all retention settings | | retention set | --field --value | Set retention field |

Noun: plan

Phase-specific configuration using plan {phase} {verb} pattern.

| Verb | Parameters | Purpose | |------|------------|---------| | phase-1-init get | [--field] | Get init phase configuration | | phase-1-init set | --field --value | Set init phase field (branch_strategy) | | phase-2-refine get | [--field] | Get refine phase configuration | | phase-2-refine set | --field --value | Set refine phase field (confidence_threshold, compatibility) | | phase-5-execute get | [--field] | Get execute phase configuration | | phase-5-execute set | --field --value | Set execute phase field (commit_strategy) | | phase-6-verify get | [--field] | Get verify phase configuration | | phase-6-verify set-step | --step --enabled | Toggle generic verify step | | phase-6-verify set-domain-step | --domain --step --enabled | Toggle domain verify step | | phase-6-verify set-max-iterations | --value | Set verify max iterations | | phase-7-finalize get | (none) | Get finalize phase configuration | | phase-7-finalize set-step | --step --enabled | Toggle finalize step | | phase-7-finalize set-max-iterations | --value | Set finalize max iterations |

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 | | get-command | --name | Get single CI command by name (ready to execute) | | set-provider | --provider --repo-url | Set CI provider | | set-tools | --tools | Set authenticated tools (comma-separated) | | persist | --provider --repo-url [--commands] [--tools] [--git-present] | Persist full CI config (provider, commands, tools) |

init

python3 .plan/execute-script.py plan-marshall:manage-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. Technical domains store only bundle reference and workflow_skill_extensions -- profiles are loaded at runtime from extension.py.

Example (Java project after init):

{
  "skill_domains": {
    "system": {
      "defaults": ["plan-marshall:ref-development-standards"],
      "optionals": ["plan-marshall:ref-development-standards"],
      "task_executors": {
        "implementation": "pm-workflow:task-implementation",
        "module_testing": "pm-workflow:task-module_testing",
        "integration_testing": "pm-workflow:task-integration_testing"
      }
    },
    "java": {
      "bundle": "pm-dev-java",
      "workflow_skill_extensions": {
        "triage": "pm-dev-java:ext-triage-java"
      }
    }
  },
  "system": {
    "retention": {
      "logs_days": 1,
      "archived_plans_days": 5,
      "memory_days": 5,
      "temp_on_maintenance": true
    }
  },
  "plan": {
    "phase-1-init": {
      "branch_strategy": "direct"
    },
    "phase-2-refine": {
      "confidence_threshold": 95,
      "compatibility": "breaking"
    },
    "phase-5-execute": {
      "commit_strategy": "per_deliverable"
    },
    "phase-6-verify": {
      "max_iterations": 5,
      "1_quality_check": true,
      "2_build_verify": true,
      "domain_steps": {}
    },
    "phase-7-finalize": {
      "max_iterations": 3,
      "1_commit_push": true,
      "2_create_pr": true,
      "3_automated_review": true,
      "4_sonar_roundtrip": true,
      "5_knowledge_capture": true,
      "6_lessons_capture": true
    }
  }
}

Standard Domains

System Domain

The system domain contains task executors and base skills applied to all tasks.

| Field | Purpose | |-------|---------| | defaults | Base skills loaded for all tasks (plan-marshall:ref-development-standards) | | optionals | Optional base skills available for selection | | task_executors | Maps profiles to task executor skills (convention: profile X -> pm-workflow:task-X) |

Technical Domains (Profile Structure)

Technical domains store bundle reference and workflow_skill_extensions in marshal.json. Profiles are loaded at runtime from extension.py.

| Profile | Phase | Purpose | |---------|-------|---------| | core | all | Skills loaded for all profiles | | implementation | execute | Production code tasks | | module_testing | execute | Unit/module test tasks | | integration_testing | execute | Integration test tasks | | quality | verify | Documentation, verification |

Available Domains:

| Domain | Bundle | Extensions | |--------|--------|------------| | java | pm-dev-java | triage | | javascript | pm-dev-frontend | triage | | plan-marshall-plugin-dev | pm-plugin-development | outline, triage | | documentation | pm-documents | outline, triage |

Use resolve-domain-skills --domain {domain} --profile {profile} to get aggregated skills.


Scripts

| Script | Notation | |--------|----------| | plan-marshall-config | plan-marshall:manage-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 --help flag

Integration Points

With plan-marshall Skill

  • Called during wizard initialization
  • Called from configuration menus

With Implementation Agents

  • skill-domains get-defaults provides skills to load
  • skill-domains get-optionals provides available optionals

With Cleanup

  • system retention get provides 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-steward first
  • skill_domains not configured - Run /marshall-steward first
  • Unknown domain: {name} - Domain doesn't exist