dev-intake
Turn ideas, brainstorms, feature requests, bug reports, or SOW documents into GitHub issues an agent can act on without further questions.
Skill by vegastack
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/vegastack-dev-intake
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: documents, writing, agent-building
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
- Runs as
- Node.js package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/dev-intake
What's inside
- Skill name
dev-intake- Description
- Turn ideas, brainstorms, feature requests, bug reports, or SOW documents into GitHub issues an agent can act on without further questions. Use when the user asks for a new feature or capability ("add support for X", "I need Y", "can we make it do Z"), when asked to "turn this into issues", "create tasks from this SOW", "write up an issue for" a feature or bug, "users report X — make an issue", "plan this as issues", "slice this epic", or when the user gives approval on a drafted issue and it needs recording. Not for writing the implementation plan of an approved issue (dev-plan), implementing issues or a trivial one-or-two-file fix (dev-implement), creating PRs or merging (dev-ship), or project bootstrap (dev-setup).
- License
- MIT
- Instructions
- 76 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
Agent Skills spec issues
- files: referenced but missing: references/ask-route.md
Files (7)
- SKILL.md
- openai.yaml · agents/
- evals.json · evals/
- brief-template.md · references/
- brief-lint.mjs · scripts/
- brief-lint.test.ts · tests/
- trigger-queries.json · tests/fixtures/
SKILL.md (first lines)
# dev-intake
Write the issue: every question is asked here, because dark mode asks none.
Requirements come in as the operator's brainstorm, feature thought, bug report, or SOW; issues go out complete enough that a fresh agent needs nothing but the URL, because an under-specified issue becomes an interruption or a guess.
Nearest neighbors: `dev-plan` owns the how once a brief is approved; intake owns the what/why and the approval mechanics; `dev-implement` builds.
## Ground before you ask
Finding facts is your job, because a brief built on unverified facts is a confident mistake waiting for dark mode. Before the first question:
- **Read the file before speaking about it** — open the actual paths the work would change: current behavior, patterns to reuse, where it plugs in. The brief cites these real paths later, because a brief naming no files is a sign this step was skipped.
- Verify dependencies: any library, service, or API capability the approach leans on gets checked against current official docs, noted with the date; stack, schema, auth, and infra choices route through `dev-architect`'s verify protocol.
- Cross-check the request against product docs and current behavior; a contradiction is asked out loud — "you asked for X; the code does Y — which wins?" — because a silently resolved contradiction is a guess the operator did not make. Push back on cost the same way: when a simpler version covers most of the need, name it.
- Triage every unknown into three bins: *findable* → find it now, yourself; *only-the-operator-knows* → ask, with a recommendation; *only-running-code-can-tell* → a `research` issue or the issue's first spike step. Guessing is not a bin.
## Size the work — say it out loud
Every issue gets one size, announced with its reason, applied as a label, and recorded in the brief's `**Size:**` line; the operator can override it:
- **`small`** — a small change to a flow that already exists in the repo to read. Brief and plan are written together and one ack covers both.
- **`medium`** — one outcome with real design choices or new ground inside one issue. Brief ack, then a separate planning session, then a plan ack.
- **`large`** — several deliverables. Brief ack, then planning splits it into small/medium sub-issues and the parent becomes an `epic`.
- **`research`** — a question to answer, not code to keep. The brief is the question plus what "answered" looks like.
When the size is unclear, take the larger one; `dev-plan` may raise it later, and lowering it waits for the operator's yes.
## The interview
Ask in rounds by the ask route (`references/ask-route.md`): your harness's question tool when you have one and the asker is the issue's operator, otherwise one `questions` comment on the issue and `waiting-on-operator`, because a headless run that cannot ask is not a run that may guess. On that issue route, create the issue before the first round — `waiting-on-operator`, the operator assigned, the request as its body — so the round has a surface; the brief replaces that body once the round is answered. Each round covers the current frontier, every open decision that doesn't depend on another answer. Number the questions; give each a recommended answer with a one-line reason so the operator can reply "all recommended", and skip what the material or an earlier round settled, because a re-asked question reads as not having listened. A vague or self-contradicting answer gets pushback with concrete options — a mermaid or ASCII sketch when a picture beats prose — because a vague answer absorbed silently becomes a guess in dark mode. Stop when *a fresh agent could act on each issue without asking anything.*
The angles, in order — product (who, observable outcome, in/out of scope, slices, priority) → behavior (flows, rules, permissions, edge and failure cases; UI states and copy) → technical (only choices genuinely the operator's, each with a recommendation, checked against `dev-architect`; the version impact where the project versions releases) → quality and risk (what proves it works, what earns `risky`, what stops a dark run). Deep approach trade-offs beyond the operator's choices belong to `dev-plan`. Where dev.md's `issue-fields:` knob names org fields, two of the numbered questions are Priority and Effort, their options read once from `gh api orgs/<org>/issue-fields` and ordered by each option's `priority` key rather than guessed — recommend the option named `Medium` for Priority, or the middle option where the org names none, and for Effort the lowest option on `research` and `small`, the middle option on `medium`, the highest on `large` — so "all recommended" still answers both, and a knob at `none` skips them.
**Bug variant** (`fix:` issues): reproduction steps — or the artifacts needed to obtain them (logs, HAR, recording) — are a required brief section, the brief names `dev-debug` as the implement path, and a bug that can't be reproduced yet becomes a `research` issue first.
## Slicing and hierarchy
- One issue = one outcome that fits one agent session, sliced vertically; blockers use native dependencies, phases milestones, parents native sub-issues.
- Deliberately deferred work ("someday, not now") lives in the parent's out-of-scope section, because an icebox issue clutters the tracker; a tracking issue exists only on the operator's ask.
- **Epics:** a multi-deliverable feature gets a parent whose body is a map, because a parent that is also work gets claimed — `Destination` (the one or two lines every session orients to) · `Decisions so far` (one-line gists linking closed children) · `Not clear yet` (in-scope questions you cannot yet phrase sharply — the test is phrasing, not answering; don't pre-slice fog) · `Out of scope` (the tempting adjacent work, named). Each child is sized independently. Only children get `queued`, because the epic is the map.
- Titles carry the type prefix (dev.md's `branch:` type list, plus `research:` for an inquiry) and the native issue type where the org has them; issue and PR titles agree. A branch only ever uses a type the knob lists, so a `research:` issue that does write code takes a listed one — `worktree create` refuses rather than picking.
## The brief
The issue body follows [brief-template](references/brief-template.md), marker line included: inline over linked, concrete over abstract, evidence over confidence — touch points name real paths, dependency claims carry their check date, and anything unverifiable goes to **Assumptions — confirm or correct**, because an asserted guess binds the agent. Tests-and-acceptance names the seams — the public boundaries tests will live at — because dark mode can't ask later. A brief runs 300–600 words: a section the fresh agent would not need is cut, and one they would have to guess at is missing.
Small issues get their plan now: after the brief has consensus, invoke `dev-plan`'s inline mode in this conversation and post brief (body) + plan (comment) together, so the operator's single ack covers both.
Before posting any brief, run `node <path-to-this-skill>/scripts/brief-lint.mjs --file <draft> --scope <size> --json` (add `--fix` for fix:-type briefs — it requires the Reproduction section): structure gaps block (exit 2), quality smells warn; fix blocks before the operator sees the draft. Inline plans also pass `dev-plan`'s plan-lint.
## Labels and acks
- A new issue starts at `waiting-on-operator` plus its size label, and `risky` when it touches security, money, user data, or production. Create it with `--assignee <operator>` (the person who asked), so GitHub's own notification reaches them. After creating it, read and write it only through `vegafactory issue` (conventions' "Reading and writing issues").
- Set the native issue type where the org has them (dev.md `issue-types:`): `gh issue create --type <Name>`, then confirm it in the synced `issue.md`. Where `issue-fields:` names Priority and Effort, set both in one request (the PUT replaces every value it does not carry):
```sh
gh api "orgs/$ORG/issue-fields" --jq '.[] | select(.name=="Priority" or .name=="Effort") | {id, name}' # once per run
printf '{"issue_field_values":[{"field_id":%s,"value":"%s"},{"field_id":%s,"value":"%s"}]}' \
"$PRIORITY_ID" "$PRIORITY" "$EFFORT_ID" "$EFFORT" |
gh api -X PUT "repos/$OWNER/$REPO/issues/$N/issue-field-values" --input -
```
GitHub silently drops a value written without push access, so read the values back and report a mismatch. Both knobs at `none` means the issue carries labels only — say so in one sentence.
- An ack is the operator's explicit words — in the issue or in this session — from anyone with write access. Labels, silence and time are not acks. Anything else they say is input: apply it and ask again.
- Record each ack with `vegafactory issue ack <n> --stage brief|plan --by <login> --quote "<their words>" --source comment:<id>|session` (a small issue's single ack is `--stage plan`, covering brief and plan). A session ack is recorded with that person's own `gh` login.
- Then move the state with `vegafactory issue label <n> --state …`: `small` and `research` → `queued` (unassigned); `medium` and `large` → `planning` (the operator).
- An issue leaves `waiting-on-operator` only once every Assumptions entry is resolved (confirmed, corrected, or moved to a spike) and the section deleted.
- A directional decision this work settles (dev.md's Decisions test) is proposed as one register line on the operator's yes; `dev-ship` records it at merge.
- The operator edits a draft → apply it and summarize what changed since they last read it.
## After the ack
An acked issue that later needs a material change moves back to `waiting-on-operator` with one comment naming what changed. The edit invalidates the old ack by itself (it binds the brief's hash), so record the new ack the same way and bump the brief's revision marker. Ticking plan checkboxes never needs a new ack.From vegastack/vegafactory, MIT.
More from vegastack/vegafactory
- 0.570score
skillify
vegastack
Repo-local skill factory and auditor for the vegafactory monorepo.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-setup
vegastack
Bootstrap a project for issue-driven agent development — existing repo or brand-new empty directory.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-ship
vegastack
Land finished work, each step only on the operator's explicit word.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-status
vegastack
The operator's board and the project's story.
SkillAFreshness: AClaude Code +9 - 0.570score
skills-refresh
vegastack
Re-verify the dated platform and harness facts the dev skills pin, and file what changed as issues.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-review
vegastack
Independent cross-tool review of finished implementation work — a diff against its brief and plan, reviewed by the other tool.
SkillAFreshness: AClaude Code +9 - 0.566score
dev-implement
vegastack
Implement an approved GitHub issue end to end without further user input.
SkillAFreshness: AClaude Code +9 - 0.566score
dev-plan
vegastack
Write the implementation plan for an approved issue before any code exists.
SkillAFreshness: AClaude Code +9 - 0.566score
vegafactory-setup
vegastack
Bootstrap and maintain the org control room — the org, group, repo, worker and board files whose defaults every repo's dev profile layers on.
SkillAFreshness: AClaude Code +9 - 0.566score
skill-maintainer
vegastack
Standards and release operations for the vegafactory repository itself.
SkillAFreshness: AClaude Code +9 - 0.529score
dev-architect
vegastack
VegaStack's architecture advisor - house stack decisions, recorded rejections, and verified platform facts.
SkillBFreshness: BClaude Code +9 - 0.529score
dev-debug
vegastack
Reproduce-first bug work.
SkillBFreshness: BClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 9
- Last commit (this folder)
- Sep 18, 2026 (1 month ago)
- Last release
- Sep 19, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/vegastack/vegafactory
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from vegastack
- 0.570score
skillify
vegastack
Repo-local skill factory and auditor for the vegafactory monorepo.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-setup
vegastack
Bootstrap a project for issue-driven agent development — existing repo or brand-new empty directory.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-ship
vegastack
Land finished work, each step only on the operator's explicit word.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-status
vegastack
The operator's board and the project's story.
SkillAFreshness: AClaude Code +9 - 0.570score
skills-refresh
vegastack
Re-verify the dated platform and harness facts the dev skills pin, and file what changed as issues.
SkillAFreshness: AClaude Code +9 - 0.570score
dev-review
vegastack
Independent cross-tool review of finished implementation work — a diff against its brief and plan, reviewed by the other tool.
SkillAFreshness: AClaude Code +9
Cite this page
dev-intake skill. Agent Mart. https://agentmart.dev/skills/vegastack-dev-intake (last updated 2026-10-24)