This skill should be used when the user asks to "create a package", "scaffold a Python library", "make a GitHub-ready repo", "generate badges", "convert to plugin", "brownfield conversion", "validate plugin standards", or mentions package scaffolding, portfolio polish, repository structure setup, badge generation, or plugin standards validation. Creates GitHub-ready Python libraries, Claude skills, and Claude Code plugins with badges, coverage metrics, media artifacts, interactive course modules, and automatic plugin standards validation. Includes PHASE 6: GitHub Publication and PHASE 7: Repository Finalization.
PRIMARY: Create Claude Code Plugins (.claude-plugin/, scripts/, hooks/) for packages with hooks, skills, or Claude Code integration.
SECONDARY: Convert existing Python libraries to plugins (brownfield conversion).
ADVANCED: Create pure Python backend libraries (pip-installable) only when plugin architecture is not appropriate.
All packages are polished into resume-worthy GitHub artifacts with badges, coverage metrics, and media assets.
/gitready # Full pipeline on current directory
/gitready <name> # Scaffold new package
/gitready --status # Show phase status (COMPLETED/SKIPPED/PENDING)
/gitready --dry-run # Preview without creating
/gitready --skip <phase> # Skip specific phase (e.g., --skip media)
/gitready --check-only # Analyze without creating
/gitready --publish # Publish to GitHub after polish
/gitready --finalize # Finalize after GitHub publication
| User says | Action |
|---|---|
/gitready | Full pipeline on current directory |
/gitready <name> | Scaffold new package with full pipeline |
/gitready --status | Show all phase states for a package (✓ COMPLETED, ⏭ SKIPPED, ○ PENDING) |
/gitready --dry-run | Preview what will happen |
/gitready --skip media | Skip NotebookLM media generation |
/gitready --check-only | Analyze without creating |
One command runs the full intelligent pipeline:
Phase states: ✓ COMPLETED (done) · ⏭ SKIPPED (conditional — auth missing or flag not provided) · ⏭ N/A (not applicable to this package type)
| Type | Trigger | Use Case |
|---|---|---|
claude-plugin | .claude-plugin/ or empty dir | DEFAULT: Packages with hooks/skills |
claude-plugin+mcp | .claude-plugin/ + mcp_server.py | Plugins with MCP server |
brownfield-plugin | src/ + pyproject.toml | Convert existing Python lib to plugin |
python-library | Only pyproject.toml, no src/ | ADVANCED: Pure backend, no hooks |
claude-skill | SKILL.md exists | Standalone Claude skills |
hook-package | hook/ directory exists | Legacy hook distribution |
Full detection script:
references/package-type-detection.md
.gitignore to prevent dual git trackingCLAUDE_PLUGIN_ROOT for all path references - see references/plugin-environment.mdScripts (resources/):
badge_generator.py - Generate badges from shields.iocheck_standards.py - Validate package standards compliancestandards_compliance.py - Check Python/Claude skill standardsrecruiter_checklist.py - Portfolio optimization checklistTemplates (resources/): AGENTS.template.md
Reference Docs (resources/): BADGE_GENERATION_GUIDE.md, STANDARDS_VALIDATION.md, V5.2_UPDATE_SUMMARY.md
Before any phase is selected, detect and resolve stale install locations:
TARGET_DIR="$1" # from gitready argument
SKILL_NAME=$(basename "$TARGET_DIR")
# Detect if pointing at old canonical install location
if [[ "$TARGET_DIR" == "P:/.claude/skills/"* ]]; then
echo "WARNING: gitready was invoked on an installed skill location."
echo "The source of truth should be at P:/packages/$SKILL_NAME"
if [ -d "P:/packages/$SKILL_NAME" ]; then
echo "Auto-resolving to source location..."
TARGET_DIR="P:/packages/$SKILL_NAME"
else
echo "ERROR: No package found at P:/packages/$SKILL_NAME"
echo "Migration needed: cp -r $TARGET_DIR/* P:/packages/$SKILL_NAME/"
exit 1
fi
fi
Why: gitready must always process the packages source of truth, never an installed junction location. Processing the stale location creates dual implementations that cause confusion and stale code.
Trigger: --dry-run flag. Shows directory structure, files to create, and next steps. No files written.
Prerequisite (auto-runs before any phase):
python resources/phases/validate_pointers.py
Validates all bundled-resource pointers resolve to existing, non-empty files. Stop and fix broken pointers before continuing.
Read completed phases (from target's references/changelog.md):
python resources/phases/track_phases.py {{TARGET_DIR}} --read
Reports which phases already completed; skips phases marked -- COMPLETED or -- SKIPPED.
Steps:
tree {{TARGET_DIR}} -a -L 3rm -f {{TARGET_DIR}}/.claude/state*.jsonls {{TARGET_DIR}}/src/python resources/phases/track_phases.py {{TARGET_DIR}} --write 1Output: "Prep complete. Modules: [Y/N]. State cleared."
See
references/package-type-detection.mdfor full detection script and package type table.
Auto-detects package type. Python libraries with src/ + pyproject.toml auto-convert to brownfield-plugin.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 1.5
Pre-Conversion Checklist:
P:/, /Users/, C:/ in source code).sh scripts need .bat equivalents)See
references/brownfield-conversion.mdfor detailed 7-step workflow.
Rollback: Backup at .backup/. To rollback: cp -r .backup/* . && rm -rf scripts/ .claude-plugin/
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 1.6 --status N/A
(If not brownfield-plugin, this phase is N/A — track as N/A, not SKIPPED)
See
references/exception-registry.mdfor full 4-step workflow.
Documents known deviations from plugin standards in .gitready/exceptions.json so gitready stops repeatedly flagging them.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 1.6.5
READ:
resources/phases/PHASE-1.7-plugin-standards.mdSeereferences/exception-aware-validation.mdfor waiver logic.
Validates plugin files/folders against Claude Code plugin standards. Exception-aware: skips waived violations from .gitready/exceptions.json.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 1.7
See
references/stale-location-cleanup.mdfor full 8-step workflow.
Cleans old canonical locations, creates proper junctions/symlinks pointing to P:/packages/ source of truth.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 1.8
See
references/build-structure.mdfor directory layouts per package type.
Creates directory structure based on detected package type. Claude skills get skill/, plugins get .claude-plugin/ + scripts/ + hooks/, libraries get src/ + pyproject.toml.
Local Development Setup: See references/deployment-models.md for junction/symlink setup, multiple skills/hooks patterns, and cleanup after relocation.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 2
READ:
resources/phases/PHASE-3-templates.md
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 3
See
references/validation-scripts.mdfor platform compatibility checks, symlink tests, pytest collect, and tree diff.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 4
See
references/advanced-phases.mdfor full execution details.
Runs code-review plugin (security, performance, maintainability) and meta-review (path traversal, import graph, doc consistency). Critical findings must be fixed before PHASE 5.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.5
READ:
resources/phases/PHASE-4.7-media-gen.mdIMPORTANT: READreferences/notebooklm-integration.mdfor auth credentials, valid video styles (NOT "documentary"), file upload workaround, and download commands.
Requires NotebookLM auth. If auth is not available, track as SKIPPED:
python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.7 --status SKIPPED
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.7
READ:
resources/phases/PHASE-4.8-interactive-course.mdIMPORTANT: The course is built using the 4-pass pipeline in the phase doc — design-system.md and interactive-elements.md are bundled with this skill atresources/codebase-to-course/. READ them before generating.
Requires NotebookLM auth. If auth is not available, track as SKIPPED:
python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.8 --status SKIPPED
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.8
Auto-generated artifacts (if missing):
docs/video.html for GitHub PagesTrack completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 5
See
references/advanced-phases.mdfor details.
Trigger: --publish flag. Extracts from monorepo, creates GitHub repo via GitHub API.
GitHub API Creation: Uses resources/create_github_repo_api.py which:
GITHUB_TOKEN env var--private for private)repo scope before attempting creationUsage:
/gitready my-package --publish
# Or manually
python resources/create_github_repo_api.py my-package "Description here"
If --publish flag is not provided, track as SKIPPED:
python resources/phases/track_phases.py {{TARGET_DIR}} --write 6 --status SKIPPED
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 6
See
references/advanced-phases.mdfor details and options.
Trigger: --finalize flag. Enables GitHub Pages, creates initial release, adds topics/tags, generates CODEOWNERS and SECURITY.md.
If --finalize flag is not provided, track as SKIPPED:
python resources/phases/track_phases.py {{TARGET_DIR}} --write 7 --status SKIPPED
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 7
See
references/advanced-phases.mdfor details and options.
Security scanning (bandit, safety), dependency auditing (pip-audit), badge validation, quality metrics.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 4.6
Detects and reports obsolete files: backup files (*.backup-*, *.old, *.bak), orphaned test files, obsolete documentation, duplicate implementations. Output: CLEANUP_REPORT.md with categorized removal commands.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 8
Initialize git repo (if not already): git init, add all files, initial commit, set main branch. Skips if .git/ exists.
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 9
Checks: TODOs in pyproject.toml, plan files in root, no tests, version 0.0.x/0.1.x.
Scoring: 90-100 (Excellent), 70-89 (Good), 50-69 (Fair), <50 (Poor).
Auto-fixes: Remove TODOs, move plans to docs/planning/, bump version.
Output: RECRUITER_READINESS_REPORT.md
Track completion: python resources/phases/track_phases.py {{TARGET_DIR}} --write 10
See
references/completion-report.mdfor full templates and truth-claim rules.
MANDATORY: After all phases, show GitHub readiness status with phase execution evidence.
Three statuses:
Do not claim "no pending work" when conditional phases are SKIPPED. SKIPPED means the phase was not run because a flag was not provided — it is not settled, it is deferred. Pending flags = outstanding decisions.
When reporting skipped phases, use full phase names (not numbers). Show N/A separately from SKIPPED:
Related skills: /init - Initialize CLAUDE.md for new projects
Used by: Claude Code Plugins (primary), Python library conversion (migration), pure Python backend libraries (advanced)
See
references/changelog.mdfor full version history.