src/autoskillit/skills_extended/compose-pr/SKILL.md
Composition executor for pull requests. ALWAYS invoke this skill when instructed to compose a PR. Do not read prep files or create PRs directly — use this skill first to load the composition workflow.
npx skillsauth add talont-org/autoskillit compose-prInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Read the PR prep file from prepare-pr, validate arch-lens diagrams, compose the PR body,
and create the GitHub PR via gh pr create.
This skill Does NOT invoke any sub-skills or slash commands. It is Part 3 of 3 in the decomposed PR flow (prepare → run_arch_lenses → compose).
/autoskillit:compose-pr {prep_path} {all_diagram_paths} {work_dir} {base_branch} [closing_issue]
prepare-pr.md files
(may be empty string if no lenses succeeded)feature_branch via git rev-parse)Closes #NNEVER:
gh is not accessible — emit pr_url = (empty) and exit successfully{{AUTOSKILLIT_TEMP}}/compose-pr/run_in_background: true is prohibited)ALWAYS:
gh auth status before attempting GitHub operationspr_url token (empty string when GitHub unavailable)all_diagram_paths is empty or all diagrams fail validation
(omit Architecture Impact section; do not include a placeholder)no diagrams case: when all_diagram_paths is empty or every path fails
marker check, set validated_diagrams = [] and omit the Architecture Impact sectionWhen context is exhausted mid-execution, temp files may be written but the PR may
not yet be created. The recipe routes to on_context_limit (typically
release_issue_failure), bypassing the normal completion protocol.
Before emitting structured output tokens:
pr_url = (empty) if the PR was not successfully createdParse positional arguments:
prep_pathall_diagram_paths (may be empty string)work_dirbase_branchclosing_issue (optional — overrides value in prep file if set)Derive feature_branch and set shell variables:
FEATURE_BRANCH=$(git -C $WORK_DIR rev-parse --abbrev-ref HEAD)
BASE_BRANCH=$4
Create temp dir (relative to the current working directory):
mkdir -p {{AUTOSKILLIT_TEMP}}/compose-pr/
ts=$(date +%Y-%m-%d_%H%M%S)
Timestamp ts is assigned in the bash block above.
Read the file at prep_path. Extract:
task_title (from ## Title section)## Plan Summary — detect single vs multi-plan by presence of group headings)requirements_section (from ## Requirements — empty if section is blank)conflict_resolution_table (from ## Conflict Resolution Table — empty if section is blank)new_files (from ## Changed Files > ### New (★):)modified_files (from ## Changed Files > ### Modified (●):)feature_branch from ## Metadata (use the git-derived value from Step 0 if set)closing_issue from ## Metadata (overridden by arg[5] if arg[5] is non-empty)Split all_diagram_paths by comma; trim whitespace from each path.
For each path:
★ or ● character in the mermaid block
validated_diagramsIf all_diagram_paths is empty or all diagrams fail → validated_diagrams = [].
Write PR body to {{AUTOSKILLIT_TEMP}}/compose-pr/pr_body_$ts.md (using the ts variable from Step 0).
## Summary
{First paragraph of the plan's ## Summary section, or first 5 lines after the heading}
{If requirements_section is non-empty:}
## Requirements
{requirements_section}
{If conflict_resolution_table is non-empty:}
## Conflict Resolution Decisions
The following files had merge conflicts that were automatically resolved.
{conflict_resolution_table}
{## Architecture Impact — include ONLY if validated_diagrams is non-empty:}
## Architecture Impact
### {Lens Name} Diagram
```mermaid
{diagram content}
{If closing_issue is non-empty:} Closes #{closing_issue}
Plan file: {plan_path}
🤖 Generated with Claude Code via AutoSkillit
<!-- autoskillit:pipeline-signature steps=prepare_pr,run_arch_lenses,compose_pr,annotate_pr_diff,review_pr -->
#### Multiple plans format:
```markdown
## Summary
{Synthesized overall summary — 2-3 sentences. Spawn a sonnet subagent if needed.}
<details>
<summary>Individual Group Plans</summary>
### Group 1: {heading from plan 1}
{Summary from plan 1}
### Group 2: {heading from plan 2}
{Summary from plan 2}
</details>
{If requirements_section is non-empty:}
## Requirements
{requirements_section}
{If conflict_resolution_table is non-empty:}
## Conflict Resolution Decisions
The following files had merge conflicts that were automatically resolved.
{conflict_resolution_table}
{## Architecture Impact — include ONLY if validated_diagrams is non-empty:}
## Architecture Impact
### {Lens Name} Diagram
```mermaid
{diagram content}
{If closing_issue is non-empty:} Closes #{closing_issue}
Plan files:
{plan_path_1}{plan_path_2}🤖 Generated with Claude Code via AutoSkillit
<!-- autoskillit:pipeline-signature steps=prepare_pr,run_arch_lenses,compose_pr,annotate_pr_diff,review_pr -->
### Step 4: Check GitHub Availability
Run:
```bash
gh auth status 2>/dev/null
If exit code is non-zero:
pr_url = (empty)gh pr create \
--base $BASE_BRANCH \
--head $FEATURE_BRANCH \
--title "$TASK_TITLE" \
--body-file {{AUTOSKILLIT_TEMP}}/compose-pr/pr_body_$ts.md
Capture PR URL from stdout.
Emit these structured output tokens (literal plain text, no markdown decoration):
On success:
pr_url = https://github.com/owner/repo/pull/N
When gh is not available or not authenticated:
pr_url =
development
Generate YAML recipes for .autoskillit/recipes/. Use when user says "make script skill", "generate script", "script a workflow", "write a script", "create a script", "new recipe", "write a pipeline", or when loaded by other skills for script formatting.
data-ai
Create Uncertainty Representation visualization planning spec showing error bar definitions, distribution-aware alternatives, and multi-seed variance protocols. Statistical lens answering "How is uncertainty honestly represented?"
data-ai
Create Temporal Dynamics visualization planning spec showing axis scaling (linear vs log), smoothing disclosure, epoch/step alignment, run aggregation (mean + variance bands), early-stopping markers, and wall-clock vs step-count x-axis. Temporal lens answering "Are training dynamics shown clearly and honestly?"
data-ai
Create Narrative Story Arc visualization planning spec showing visual consistency across the report (same color = same model everywhere), logical figure progression, redundant figure detection, and narrative dependency between figures. Narrative lens answering "Do the figures tell a coherent story across the report?"