Skip to content
Back to skills

Embed

ASecurity

Auto-pipeline from idea to implementation-ready tickets (or full implementation)

  • 67 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 23, 2026
ai-agentsgobashgitapidocumentation

Works with

  • api

Security analysis

A100/100

Pro scans all 21 files and shows the line behind each finding

Scanned October 2, 2026

npx -y skills add gethuman-sh/human --skill embed --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Embed?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Embed
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/gethuman-sh-embed-fd430e83/badge)](https://www.skillsdirectory.com/skills/gethuman-sh-embed-fd430e83)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: human-sprint
description: Auto-pipeline from idea to implementation-ready tickets (or full implementation)
argument-hint: <rough idea or topic>
---

# Overview

This skill chains the full human pipeline into a single flow: **Ideate -> Plan -> Execute -> Review**. It auto-decides mechanical questions using encoded decision principles and only surfaces genuine taste decisions to the user. The user can stop at any phase.

## Decision Principles (for auto-deciding mechanical questions)

- **Narrowest wedge first**: Choose the smallest scope that delivers value
- **Completeness within scope**: Whatever is in scope should be complete
- **Explicit > clever**: Prefer obvious solutions over clever ones
- **Reuse > reinvent**: Use existing patterns and code before creating new ones
- **Bias toward action**: When in doubt, lean toward building

## Taste Decisions (always surface to user via AskUserQuestion)

- Scope expansion vs. reduction
- Architecture choices with genuine tradeoffs
- When product and engineering perspectives conflict
- Pipeline depth (how far to go)

---

Follow these steps in order:

## Step 1 — Parse arguments

Parse `$ARGUMENTS` as a rough idea or topic. Set `<slug>` to a slugified version (lowercase, spaces to hyphens, strip special chars, max 50 chars).

## Step 2 — Ask pipeline depth

Ask the user via `AskUserQuestion`:

"How far should the pipeline go?
- (A) **Tickets only** — create PM ticket + engineering plan, then stop
- (B) **Plan + execute** — create tickets and implement the plan
- (C) **Full pipeline** — create tickets, implement, and run a review"

Store the user's choice as `<pipeline_depth>`.

## Step 3 — Phase 1: Ideate (creates PM ticket)

1. Create the output directory: `mkdir -p .human/ideation`

2. Delegate to the **human-ideator** agent (Phase 1 — context gathering):

```
Task(subagent_type="human-ideator", model="opus", prompt="Phase 1: Gather context for the idea: $ARGUMENTS. Explore the codebase for relevant code, existing patterns, recent git history, existing tickets, and any .human/ artifacts. Return a context summary and suggested forcing questions.")
```

3. Present the agent's context summary to the user.

4. Ask forcing questions one at a time using `AskUserQuestion`. Ask each question individually, collecting the answer before proceeding to the next:
   - "What is the actual pain? (not the feature request — what hurts today?)"
   - "Who has this pain? (specific users or personas, not hypothetical)"
   - "What is the status quo? (how do people cope without this?)"
   - "What is the narrowest wedge? (the smallest version that delivers value)"
   - "What would make this a 10-star version? (dream big, then we scope back)"

5. Ask scope choice via `AskUserQuestion`: "Based on your answers, should we: (A) Expand — go broader than the narrowest wedge, (B) Hold — keep the narrowest wedge as described, or (C) Reduce — cut even further?"

6. Ask tracker choice via `AskUserQuestion`: "Which tracker should the PM ticket be created on? (e.g., 'shortcut' or 'linear')"

7. Delegate to the **human-ideator** agent (Phase 2 — generate ticket content):

```
Task(subagent_type="human-ideator", model="opus", prompt="Phase 2: Generate PM ticket content for the idea: $ARGUMENTS. Forcing question answers: <paste all Q&A pairs>. Scope choice: <user's scope choice>. Tracker: <chosen tracker>. Generate a structured ticket with problem statement, user story, acceptance criteria, scope decisions, and challenge record.")
```

8. Create PM ticket on the chosen tracker:

```bash
human <tracker> issue create --project=<PROJECT> "Short title derived from the idea" --description "<structured ticket content from agent>"
```

9. Write ideation record to `.human/ideation/<slug>.md` including the full challenge record.

10. Store the PM ticket key as `<PM_TICKET_KEY>` and the tracker as `<PM_TRACKER>` for traceability.

## Step 3.5 — Resolve topology

Run `human tracker topology` and check where the plan will live:

- **Split topology** — the output says `"topology": "split"`: the plan becomes a separate engineering ticket on the tracker named in the output's `engineering` entry. Store that tracker as `<ENG_TRACKER>`. Ask the user via `AskUserQuestion` only if the project is ambiguous: "What project should the ticket be created in? (e.g. 'HUM' for Linear, 'myorg/myrepo' for GitHub)". Store the answer as `<ENG_PROJECT>`.
- **Single-tracker topology** — the output says `"topology": "single"` (no `engineering` entry): no second ticket is created. The plan will be attached to the PM ticket itself as a `[human:plan]` comment; skip the questions.

## Step 4 — Phase 2: Plan (attaches the plan where topology says)

### Step 4a: Draft

Delegate to the **human-planner** agent to create the plan. The planner returns the plan as output (no files written):

```
Task(subagent_type="human-planner", model="opus", prompt="Create an implementation plan for the idea described in .human/ideation/<slug>.md. The PM ticket is <PM_TICKET_KEY> on <PM_TRACKER>. Return the complete plan as your output. Do not write any files or create any tickets.")
```

If the planner returns a `DECISION REQUIRED:` verdict instead of a plan, it hit a genuine product/UX or ambiguity fork. Because a human is present here, surface the fork directly via `AskUserQuestion` (one option per `N:` line), then re-run the planner with the chosen direction appended to its prompt (e.g. `… The human chose: <chosen option>.`). Loop until the planner returns a plan. Do NOT attach a plan or proceed to execution while a `DECISION REQUIRED:` verdict is outstanding.

Capture the output as `<PLAN_CONTENT>`.

### Step 4b: Verify (parallel)

Launch both verification agents in a single message, passing the plan inline:

```
Task(subagent_type="plan-verify-code", model="sonnet", prompt="Verify all code references in the following implementation plan against the actual codebase. Return your verification report as output. Do not write any files.\n\n---BEGIN PLAN---\n<PLAN_CONTENT>\n---END PLAN---")

Task(subagent_type="plan-verify-docs", model="sonnet", prompt="Verify all library, framework, and API assumptions in the following implementation plan against actual documentation and source. Return your verification report as output. Do not write any files.\n\n---BEGIN PLAN---\n<PLAN_CONTENT>\n---END PLAN---")
```

### Step 4c: Finalize and attach the plan

If verification found issues, fix `<PLAN_CONTENT>` accordingly.

**The dependents check is a gate, not a note.** The code verification report
carries a `**Dependents check: <pass|fail>**` line. On **fail**, repair the plan
yourself — add the missing kinds and rows to its `## Dependents` section (each
with the query you ran and its `file:line` result), and add to `## Changes`
whatever the unaccounted dependents require — then re-run **plan-verify-code
alone** on the repaired plan. Repeat at most **twice**; if it still fails, mark
each still-failing kind in the plan's `## Dependents` section as
`unchecked: <kind> — <why>` and say so in the sprint's final report rather than
attaching a plan that reads as if nothing depended on the change. Because a human
is present in this pipeline, you may also surface a persistent failure to them —
but never attach a plan whose `## Dependents` section is absent altogether.

Then attach the plan according to the topology from Step 3.5:

**Split topology** — confirm the plan header contains a `**PM ticket**: <PM_TICKET_KEY>` line so the executor can reference both tickets in commits — add it if missing. Create the engineering ticket with the plan as the description:

```bash
human <ENG_TRACKER> issue create --project=<ENG_PROJECT> "Short title from plan" --description "$(cat <<'PLAN_EOF'
<FINAL_PLAN_CONTENT>
PLAN_EOF
)"
```

Store the engineering ticket key as `<ENG_TICKET_KEY>`. Then update the ticket description so the `**Engineering ticket**:` line in the plan header contains `<ENG_TICKET_KEY>` (replacing `TBD`). This gives the executor both keys from a single source. Set `<WORK_KEY>` to `<ENG_TICKET_KEY>`.

**Single-tracker topology** — post the plan verbatim as a `[human:plan]` marker comment on the PM ticket (no second ticket; the description stays product language):

```bash
human marker post <PM_TICKET_KEY> plan --body-file - <<'PLAN_EOF'
<FINAL_PLAN_CONTENT>
PLAN_EOF
```

Verify with `human plan show <PM_TICKET_KEY>` — it must print the plan back. The plan header needs no `**Engineering ticket**:` line, and commits reference only the PM key. Set `<WORK_KEY>` to `<PM_TICKET_KEY>`.

**If `<pipeline_depth>` is "Tickets only":** Stop here. Tell the user:
- PM ticket created: `<PM_TRACKER> #<PM_TICKET_KEY>`
- Split topology: engineering ticket created: `<ENG_TRACKER> <ENG_TICKET_KEY>`; single-tracker: plan attached as a `[human:plan]` comment on `<PM_TICKET_KEY>`
- Ideation record at `.human/ideation/<slug>.md`

## Step 5 — Mechanical decision gate

Before executing, load the plan — `human get <WORK_KEY>` for a plan in an engineering ticket description, `human plan show <WORK_KEY>` for a plan comment — and check for architecture choices or trade-offs in the plan:

- **If the plan has no taste decisions** (only mechanical implementation steps): Proceed automatically to execution. Apply the decision principles above.
- **If the plan contains trade-offs or architecture choices**: Present them to the user via `AskUserQuestion` and let the user decide before proceeding. Example: "The plan includes the following architecture choices that need your input: <list choices>. What is your preference for each?"

## Step 6 — Phase 3: Execute (implements the plan)

Delegate to the **human-executor** agent:

```
Task(subagent_type="human-executor", model="sonnet", prompt="Execute <WORK_KEY> as a plan")
```

The executor fetches the ticket, reads the plan from the description or the `[human:plan]` comment, and implements it.

**If `<pipeline_depth>` is "Plan + execute":** Stop here. Tell the user:
- PM ticket: `<PM_TRACKER> #<PM_TICKET_KEY>`
- Split topology: engineering ticket `<ENG_TRACKER> <ENG_TICKET_KEY>`
- Implementation complete
- Suggest running `/human-review <WORK_KEY>` manually if desired

## Step 7 — Phase 4: Review (final quality gate)

Delegate to the **human-reviewer** agent:

```
Task(subagent_type="human-reviewer", model="opus", prompt="Review changes for ticket <WORK_KEY>")
```

The first line under the review's `## Summary` is the outcome: `pass`, `pass with notes`, `fail`, or `unreviewable: <reason>`.

**Unreviewable escape.** If the reviewer returns `unreviewable`, the code could not be obtained (unreachable branch, or no commits referencing the key) — nothing was reviewed. Do NOT present it as "the review found issues" and do NOT enter the fix/re-review loop: there are no findings. Post the `[human:review-failed]` stage-failure marker on the PM ticket — `human marker post <PM_TICKET_KEY> review-failed --field "reason=<the reachability reason, naming the unreachable ref>"` — tell the user how to make the code reachable (push the branch / commit with the ticket key), then re-run the reviewer once the code is reachable.

Present the review results to the user.

If the review finds issues, ask the user via `AskUserQuestion`: "The review found the following issues: <list issues>. Should we: (A) Fix the issues and re-review, or (B) Accept as-is?"

If the user chooses to fix:
- Address each issue found by the reviewer
- Re-run the review: `Task(subagent_type="human-reviewer", model="opus", prompt="Review changes for ticket <WORK_KEY>")`

## Step 8 — Summary

Present the full traceability chain to the user:

Split topology:

```
Sprint complete for: <original idea>

Traceability:
- PM ticket:    <PM_TRACKER> #<PM_TICKET_KEY> — the original idea
- Eng ticket:   <ENG_TRACKER> <ENG_TICKET_KEY> — the implementation plan
- Commits:      reference both tickets

Artifacts:
- Ideation:     .human/ideation/<slug>.md
- Review:       .human/reviews/<key>.md
```

Single-tracker topology:

```
Sprint complete for: <original idea>

Traceability:
- Ticket:       <PM_TRACKER> #<PM_TICKET_KEY> — the idea, its plan ([human:plan] comment), and the review trail
- Commits:      reference the single ticket key

Artifacts:
- Ideation:     .human/ideation/<slug>.md
- Review:       .human/reviews/<key>.md
```

<!-- human:include dependents -->

Files in this skill

  • brainstorm-codebase-agent.md3.3 KB
  • brainstorm-opportunities-agent.md3.7 KB
  • brainstorm-recon-agent.md3.3 KB
  • brainstorm-trajectory-agent.md3.4 KB
  • brainstorm-triage-agent.md4.5 KB
  • codenav-skill.md2.6 KB
  • features-recon-agent.md4.8 KB
  • features-synthesis-agent.md10.2 KB
  • findbugs-api-agent.md5.8 KB
  • findbugs-concurrency-agent.md5.6 KB
  • findbugs-errors-agent.md5 KB
  • findbugs-logic-agent.md4.8 KB
  • findbugs-recon-agent.md4.6 KB
  • findbugs-triage-agent.md4.7 KB
  • gardening-complexity-agent.md5.8 KB
  • gardening-duplication-agent.md5.2 KB
  • gardening-hygiene-agent.md6.6 KB
  • gardening-structure-agent.md5.3 KB
  • gardening-survey-agent.md7.1 KB
  • gardening-triage-agent.md8.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.