Skip to main content
GeneralSteveGJones

commission-programme

Commission a project to the Programme SDLC bundle. Tailored entry point with Programme-specific audience guidance; equivalent to /sdlc-core:commission --option programme.

Stars
38
Source
SteveGJones/ai-first-sdlc-practices
Updated
2026-05-11
Slug
SteveGJones--ai-first-sdlc-practices--commission-programme
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/SteveGJones/ai-first-sdlc-practices/HEAD/plugins/sdlc-programme/skills/commission-programme/SKILL.md -o .claude/skills/commission-programme.md

Drops the SKILL.md into .claude/skills/commission-programme.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Commission to Programme

Install the sdlc-programme bundle into a project. Use this when:

  • Team size 11-50 across 2-5 teams
  • Specification maturity is formal or contract-first
  • Blast radius is moderate-to-high
  • Audit-friendly traceability matters but full regulated-industry traceability does not

For other team shapes:

  • 1-2 person projects → use commission-solo (or /sdlc-core:commission --option solo)
  • 3-10 person product teams → use the framework default (no commissioning needed)
  • Regulated industries → use commission-assured (Phase E, future)

Steps

LEVEL="${1:-production}"  # default production for Programme

if [ -n "$1" ] && [ "$1" != "--level" ]; then
    echo "Usage: commission-programme [--level production|enterprise]" >&2
    exit 1
fi
LEVEL="${2:-production}"

case "$LEVEL" in
    production|enterprise) ;;
    *)
        echo "Programme supports levels: production, enterprise" >&2
        exit 1
        ;;
esac

# Delegate to sdlc-core:commission with --option programme --level <LEVEL> --bundle-dir <Programme bundle path>
PROJECT_DIR=$(pwd)
BUNDLE_DIR="$CLAUDE_PLUGIN_ROOT"  # the sdlc-programme plugin's own root inside the container/install

# Sanity check the bundle dir
if [ ! -f "$BUNDLE_DIR/manifest.yaml" ]; then
    echo "Programme bundle manifest not found at $BUNDLE_DIR/manifest.yaml" >&2
    exit 1
fi

python3 << PYEOF
from datetime import datetime, timezone
from pathlib import Path

from sdlc_core_scripts.commission.installer import install_bundle
from sdlc_core_scripts.commission.manifest import parse_manifest
from sdlc_core_scripts.commission.recorder import (
    CommissioningRecord, is_commissioned, write_record,
)

bundle_dir = Path("$BUNDLE_DIR")
project_dir = Path("$PROJECT_DIR")
team_config = project_dir / ".sdlc" / "team-config.json"

manifest = parse_manifest(bundle_dir / "manifest.yaml")

constitution = project_dir / "CONSTITUTION.md"
overwrite = is_commissioned(team_config)
if constitution.exists() and not overwrite:
    print(f"WARNING: {constitution} exists and project is uncommissioned.")
    response = input("Replace existing constitution and commission to Programme? [y/N] ")
    if response.lower() != "y":
        print("Aborted.")
        raise SystemExit(1)
    overwrite = True

result = install_bundle(bundle_dir, project_dir, manifest, overwrite=overwrite)
print(f"Installed {len(result.installed_paths)} files")

record = CommissioningRecord(
    sdlc_option="programme",
    sdlc_level="$LEVEL",
    commissioned_at=datetime.now(timezone.utc).isoformat(),
    commissioned_by="claude-agent",
    option_bundle_version=manifest.version,
)
write_record(team_config, record)
print(f"Commissioned: programme / $LEVEL / {manifest.version}")
PYEOF

Done

Report:

  • Bundle installed: programme v0.1.0
  • Files written: count + key paths (CONSTITUTION.md, .claude/skills/, .sdlc/templates/)
  • Commissioning record at: .sdlc/team-config.json
  • Next steps:
    1. Read the new CONSTITUTION.md — it adds Programme-specific articles 12-14
    2. For your first feature, run: phase-init requirements <feature-id>
    3. Edit the requirements-spec, then phase-gate requirements <feature-id>
    4. Continue through design, test, and code phases

Model selection

This skill is mostly mechanical (file copies, JSON writes). A smaller model is sufficient.