stack-ship
Use only for a standalone stack explicitly launched with `relay --workflow stack-ship`; never invoke inside a tech-lead-managed Relay program.
Skill by ronaknnathani
Chalk Labs
Need help deploying stack-ship?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/ronaknnathani-stack-ship
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: sales, productivity
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/stack-ship
What's inside
- Skill name
stack-ship- Description
- Use only for a standalone stack explicitly launched with `relay --workflow stack-ship`; never invoke inside a tech-lead-managed Relay program. Decompose one goal into small PRs, delegate build and monitor work, surface author decisions, and auto-merge only after human approval.
- License
- MIT
- Instructions
- 145 lines in SKILL.md · view on GitHub
Files (7)
- SKILL.md
- decomposition.md · references/
- guardrails.md · references/
- monitor-loop.md · references/
- pr-build-cycle.md · references/
- stacked-mechanics.md · references/
- state-files.md · references/
SKILL.md (first lines)
# Stack Ship Drive a design or feature goal from intake to "all PRs merged" with **near-zero steering**. The orchestrator is a **router, not a worker**: it owns the plan, state, delegation, and author-facing decisions; subagents own execution and return structured digests. The [guardrails](references/guardrails.md) are non-negotiable — **read them before acting.** > Throughout this skill `master` denotes the repository's **default branch**; substitute the real > default (`main`, etc.). Auto-merge is armed only on a default-branch-based PR — which, in a stack, is > exactly the front PR. ## The one-paragraph model You (orchestrator) turn a goal into an **acceptance-criteria list** and a **stacked PR plan** (`api → utils → stitch`, smallest single-intent PRs). You spawn a **`deliver-pr` sub-agent** per PR to run the full single-PR pipeline and open the PR. You drive whichever PR currently sits on `master` (the front of the stack) to merged by pointing the **`relay pr watch`** runtime at it with yourself as the owner and running **`pr-monitor`** once for each digest it wakes you with, and you add only the stack-specific front-advance and cascade. You never write code, never post in your own voice, never approve, never make author-owned design decisions, and never install unreviewed tooling — you route work and surface questions. You stop when every acceptance criterion is met and every PR is merged. ## When to use / not use - **Use** for a multi-PR feature with a clear goal and a discoverable current→desired delta. - **Use again / resume** for an active stacked delivery run. On resume, reconstruct state, make sure exactly one watcher is running for the current front project, and handle any digest it already recorded — the author should not have to type a special "monitor-tick mode" prompt. - **Don't use** for a single small change (just do it), or when the goal/delta is too vague to write acceptance criteria — first run `brainstorming` / ask the author to sharpen the goal. ## Operating principles (the orchestrator's contract) 1. **Delegate everything executable.** If a step writes code, runs tests, posts a comment, rebases, opens/updates PRs, posts GitHub comments, resolves threads, or reads more than a couple of files, it belongs in a subagent. The orchestrator reads digests, updates state files, and decides what to delegate next. **Model:** spawn every subagent with the **default configured model** (inherit it — don't pin a tier); only override the model when the user has stated a preference for these subagents. 2. **One state writer.** The orchestrator is the canonical writer for the run's state files. Worker subagents return structured digests; they do not append to shared state files directly. If a delegated loop controller owns a tick, it assumes this same singleton state-writer role for that tick. 3. **State lives in files, never only in context.** Every tick and every PR is **idempotent and resumable** because the truth is on disk ([state files](references/state-files.md)): human-readable Markdown plus machine-readable `state.json`. 4. **One writer per branch, ever.** Never run two subagents that push the same branch at once. Serialize. (A concurrent double-push was a real near-miss.) 5. **Surface, don't decide.** Author design/scope calls get two things: a PR reply asking for input (marked, on the thread), **and** a row in the **pending-decisions table** the orchestrator keeps in `questions.md`. Never a unilateral decision. When unsure whether something is a fix or a decision, **treat it as a decision and surface it.** The orchestrator shows the author this table — **open decisions only** — whenever it changes; resolved decisions drop off the table. 6. **Never impersonate.** Every PR comment is prefixed `🤖 <agent> on behalf of <author>`, and PR bodies/status posts disclose agent authorship instead of implying the author wrote them. 7. **Approval is the only merge gate.** Auto-merge, armed only on master-base PRs, fires on a genuine human code-owner approval. Never self-approve, never `gh merge` directly. 8. **Approved tooling only.** Use only approved/verified skills, hooks, MCP integrations, and tools already available in the environment. Never install or run unreviewed third-party plugins/hooks/scripts from the internet during this workflow. 9. **Set the goal in every harness.** The session's launch input must set `/goal <the user's requested outcome>` using the original task, not instructions to run the stack-ship workflow. Relay project artifacts and `relay state` remain the durable source of truth for executing and resuming the workflow. Never replace this native goal with the file-only fallback. Detect recurring-run capabilities once and record them in `state.json`. Front-PR coverage does not depend on them: `relay pr watch` observes the front PR and wakes you, so a `/loop` or an approved scheduler is only ever a convenience for your own orchestration, never the thing that watches the PR. ## Workflow ### Phase 0 — Intake & decomposition → [references/decomposition.md](references/decomposition.md) Input is either a full design doc **or** a goal + a way to find the current→desired delta. Produce, in the project state dir: - `goal.md` — the goal in one paragraph + **acceptance criteria** (a checklist that defines "done"; this is your `/goal` and final verification gate). - `plan.md` — the stacked PR plan: ordered PRs, each with intent, scope, dependencies, and which layer it is. Decompose along the **interface-first** seam: `api → utils → stitch` — define the contract/types/surface first (plumbed but unconsumed), then the logic/helpers that operate on it, then the integration that wires it into the running system, then aggregation/telemetry. Mark which PRs are **independent** (parallelizable) vs **dependent** (pipelined). The breakdown is described in full in [decomposition.md](references/decomposition.md) — it's self-contained, no repo-specific files required. - Initialize `state.json`, `progress.md`, `tradeoffs.md`, `follow-ups.md`, `questions.md`. Record runtime capabilities in `state.json` (`/goal`, `/loop`, scheduler, monitor mode) before building. Decomposition is a planning act — do it yourself or via a single Plan subagent, then **get author sign-off on `plan.md`** if the design left genuine ambiguity (use `AskUserQuestion`); otherwise proceed with the smallest-PRs default and log the call in `tradeoffs.md`. ### Phase 1 — Build the stack → [references/pr-build-cycle.md](references/pr-build-cycle.md) For each PR, spawn a **`deliver-pr` sub-agent** that runs the full single-PR pipeline (`clarify → plan → implement → simplify → review → validate → open-pr`) in that PR's worktree and opens the PR. You do **not** re-implement those phases — `deliver-pr` owns them; you hand it this PR's intent, scope, acceptance criteria, branch, and base. Parallelize independent PRs (one sub-agent each, isolated worktrees); pipeline dependent ones (the API surface must land before consumers compile). `deliver-pr` **surfaces blocking questions back to you** rather than guessing; you route them to the pending-decisions table + the author and pause that PR only. ### Phase 2 — Monitor the front PR → [references/monitor-loop.md](references/monitor-loop.md) The PR currently based on `master` (the front of the stack) is watched by the **`relay pr watch`** runtime, started by *you* for the front project and pointed at *your* session: ```bash relay pr watch start <front-project-slug> --mode stack --owner <stack-orchestrator-slug> ``` The watcher observes deterministically and wakes you when the front PR needs attention; you then run the **`pr-monitor`** skill once for that digest (it triages, delegates remediation to `pr-fix`, re-arms auto-merge, and re-observes). Exactly one watcher per front PR, and never a watcher on a non-front PR — it cannot merge yet, so no wake would be actionable. You add only the two **stack-specific** parts `pr-monitor` deliberately leaves out: - **Front-advance:** when the front PR merges, stop that watcher with `relay pr watch stop <front-project-slug>` — which also closes its watcher tab — then explicitly rebase/retarget the next PR onto `master`, verify descendant base refs did not collapse, and start a watcher for the new front project with the same `--mode stack --owner` flags. - **Cascade:** after any content change to a PR that has descendants, rebase each descendant (`git rebase --onto <new-tip> <old-tip> <descendant>`), build+test, force-push, and verify base refs.
From ronaknnathani/relay, MIT.
More from ronaknnathani/relay
- 0.604score
simplify
ronaknnathani
Reduce complexity in recently changed code — cut needless abstraction, dead code, and duplication; improve names and structure — WITHOUT changing behavior.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review-pr
ronaknnathani
Review someone else's pull request (a PR URL or owner/repo#N) and leave a pending (draft) GitHub review in the user's voice, checked against their AGENTS.md…
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review
ronaknnathani
Review a change for correctness, quality, and guideline compliance using a library of specialized reviewer roles.
SkillAFreshness: A★ 3Claude Code +9 - 0.564score
pr-monitor
ronaknnathani
Handle one pull request attention event end to end — read the watcher digest, triage it, delegate the fixing to pr-fix, re-observe the pull request, and exit.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
deliver-pr
ronaknnathani
Deliver one change end to end as a single pull request — clarify → plan → implement → simplify → review → validate → open-pr — resuming from wherever it left…
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-fix
ronaknnathani
Bring a PR to mergeable — fix CI failures, address review comments, and resolve merge conflicts.
SkillBFreshness: B★ 3Claude Code +9 - 0.561score
tl
ronaknnathani
Manage a Relay program as the CEO-facing tech lead: shape goals and contracts, prioritize dependency-aware work, dispatch senior worker agents, and surface…
SkillBFreshness: B★ 3Claude Code +9 - 0.544score
build-write-like-me
ronaknnathani
Use this skill whenever the user wants to capture, clone, or codify their own (or someone's) writing voice into a reusable skill.
SkillBFreshness: B★ 3Claude Code +9 - 0.519score
open-pr
ronaknnathani
Stage, commit, push, and open a pull request following the author's repository and AGENTS.md conventions — repo-style commit messages, a prose PR summary, and…
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
commit
ronaknnathani
Create a single well-formed git commit from the working changes, following the repo's AGENTS.md and recent commit-message conventions.
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
validate
ronaknnathani
Verify a change is ready to ship by checking it against its acceptance criteria and running the repo's own quality gates in order, then report a pass/fail…
SkillCFreshness: C★ 3Claude Code +9 - 0.514score
clarify
ronaknnathani
Turn a vague or underspecified task into a crisp requirements + testable acceptance-criteria document by closing the gap between what was asked and what is…
SkillCFreshness: C★ 3Claude Code +9
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Sep 2, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/ronaknnathani/relay
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from ronaknnathani
- 0.604score
simplify
ronaknnathani
Reduce complexity in recently changed code — cut needless abstraction, dead code, and duplication; improve names and structure — WITHOUT changing behavior.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review
ronaknnathani
Review a change for correctness, quality, and guideline compliance using a library of specialized reviewer roles.
SkillAFreshness: A★ 3Claude Code +9 - 0.604score
review-pr
ronaknnathani
Review someone else's pull request (a PR URL or owner/repo#N) and leave a pending (draft) GitHub review in the user's voice, checked against their AGENTS.md…
SkillAFreshness: A★ 3Claude Code +9 - 0.564score
deliver-pr
ronaknnathani
Deliver one change end to end as a single pull request — clarify → plan → implement → simplify → review → validate → open-pr — resuming from wherever it left…
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-fix
ronaknnathani
Bring a PR to mergeable — fix CI failures, address review comments, and resolve merge conflicts.
SkillBFreshness: B★ 3Claude Code +9 - 0.564score
pr-monitor
ronaknnathani
Handle one pull request attention event end to end — read the watcher digest, triage it, delegate the fixing to pr-fix, re-observe the pull request, and exit.
SkillBFreshness: B★ 3Claude Code +9
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get stack-ship running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
stack-ship skill. Agent Mart. https://agentmart.dev/skills/ronaknnathani-stack-ship (last updated 2026-10-24)