User Story Writer
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
Turn one atomic feature/gap request into a dispatchable task in a single pass — create the task, write SPEC.md (auto-folded into linkedAssetIds server-side), add acceptance criteria, record…
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Prismer-AI/PrismerCloud spec-intake --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .claude/skills && cp -r skills-src/sdk/apc/skills/spec-intake .claude/skills/spec-intake && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .claude/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intakeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Prismer-AI/PrismerCloud spec-intake --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .agents/skills && cp -r skills-src/sdk/apc/skills/spec-intake .agents/skills/spec-intake && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .agents/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Prismer-AI/PrismerCloud spec-intake --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/sdk/apc/skills/spec-intake .cursor/skills/spec-intake && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .cursor/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Prismer-AI/PrismerCloud.git --path sdk/apc/skills/spec-intake--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Prismer-AI/PrismerCloud spec-intake --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/sdk/apc/skills/spec-intake .gemini/skills/spec-intake && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .gemini/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Prismer-AI/PrismerCloud spec-intakeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .github/skills && cp -r skills-src/sdk/apc/skills/spec-intake .github/skills/spec-intake && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .github/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Prismer-AI/PrismerCloud spec-intake --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Prismer-AI/PrismerCloud.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/sdk/apc/skills/spec-intake .opencode/skills/spec-intake && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "spec-intake" agent skill from https://github.com/Prismer-AI/PrismerCloud/tree/main/sdk/apc/skills/spec-intake into .opencode/skills/spec-intake/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "spec-intake", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
spec-intakeTurn one atomic feature/gap request into a dispatchable task in a single pass — create the task, write SPEC.md (auto-folded into linkedAssetIds server-side), add acceptance criteria, record…
Spec Intake is an agent skill from Prismer-AI/PrismerCloud. Turn one atomic feature/gap request into a dispatchable task in a single pass — create the task, write SPEC.md (auto-folded into linkedAssetIds server-side), add acceptance criteria, record provenance. Two-part epics are refused, not silently split.
Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 1 other file (for example `skill.json`). Compatibility notes: ["claude-code","prismer-sdk"]
It sits in Product & Project Management, covering User stories and Backend development. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit e5d9444. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
APC_READBACK_TOKENPRISMER_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
["claude-code","prismer-sdk"]
From compatibility in the SKILL.md frontmatter.
Spec Intake loads about 1.8k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 570 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: BashAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Prismer-AI/PrismerCloud at commit e5d9444, republished under its MIT licence (© Prismer-AI). 570 words, ~1,814 tokens.
.claude/skills/spec-intake/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.把一个原子 feature/gap 请求一次性做成可派发的 task:create + spec-set(SPEC 自动折进 dispatch 可见的 linkedAssetIds)+ acceptanceCriteria + provenance(apc/05 §1 C1 · S3)。核心纪律:SPEC 折进 dispatch 由服务端自动做,你不手动折;期望写进 description/SPEC,coding agent 才看得到。
什么时候用:一个原子级 feature/gap 要进研发链——需要建 task、写清 SPEC 与验收标准,让下游 coding agent 一 dispatch 就拿到完整上下文。
cloud task spec-set 落 SPEC asset 后,服务端已把它折进 metadata.assets.linkedAssetIds(task-spec.service.ts C1/S3)。你不要再 cloud task meta set 手动折 SPEC——那会重复且可能覆盖兄弟键。linkedAssetIds 喂给 coding agent。验收期望要么写进 description,要么写进 SPEC(会被折进 linkedAssetIds),否则 agent 看不到。--set-string:sha / id 用 --set 会被推断成 number(全数字 sha 精度毁)。写 sha 一律 --set-string。cloud task meta set 走 gate = creator / orchestrator / admin / owner。spec-intake 是 intake 步、由主 agent 跑,主 agent 建的 task 天然是 creator——所以能写。assignee 不在内。| 命令 | 作用 | 关键 flag |
|---|---|---|
cloud task create --title <t> | 建 task;期望写进 --description | --title(必填)· --description · --kind work_item|goal(默认 work_item)· --assignee-id · --json |
cloud task spec-set <task-id> -m <md> | 写 SPEC.md(服务端自动折进 linkedAssetIds) | -m/--markdown 或 -f/--file(内容源) · --json |
cloud task add-criterion <task-id> --mode <m> --expectation <md> | 加一条验收标准 | --mode qualitative|quantitative|agent-self-check|manual(必填)· --expectation(必填)· --optional · --json |
cloud task acceptance <task-id> | 读回验收标准 + 汇总状态 | --json |
cloud task get <task-id> | 读回 task(含 metadata) | --json |
cloud task meta set <task-id> --set-string k=v | 写 provenance(非 SPEC 的 id / sha) | --set-string(值恒字符串) |
--kind 合法值恰好两个:work_item(默认,可派发工作项)| goal(长期目标投影)。intake 用 work_item。--mode 合法值恰好四个:qualitative | quantitative | agent-self-check | manual。--json 下 stdout 是结构化响应;成功退出码 0,失败非零。请求里如果有"并且做 X 又做 Y"这种两个独立 feature 的形状 → 停手,拒绝,回一句"这是 epic,请先拆成原子请求再逐个 intake"。不要建一个塞两件事的 task,也不要偷偷建两个 task。
cloud task create \
--title "feat: 一句话需求" \
--description "期望/验收要点写这里,coding agent dispatch 时看得到。" \
--kind work_item --json > /tmp/task.json从 stdout 取 data.id(下称 $TID)。
cloud task spec-set "$TID" -m "# SPEC
## 目标
...
## 验收标准
- ...
" --json不要再手动 meta set 折 SPEC——spec-set 已经把 SPEC asset id 折进 metadata.assets.linkedAssetIds 了。
cloud task add-criterion "$TID" \
--mode qualitative \
--expectation "done 长这样:<可判定的验收点>" --json按需要加多条。verifier 具体方法(怎么验)留给下游,这里只钉 qualitative/quantitative 的期望。
--set-string)cloud task meta set "$TID" \
--set-string intake.sourceSha="$SOURCE_SHA" \
--set-string intake.gapRef="apc/05 C1"--set-string 保证 sha 落库是字符串(全数字 sha 不被数字化)。
cloud task get "$TID" --json # 看 metadata.assets.linkedAssetIds 含 SPEC asset id
cloud task acceptance "$TID" --json # 看 criteria 落库本 skill 的判据不是「报告里出现了 spec-set 这几个字」,而是判据拿你声明的 id 去真库/真 API 回读(structured-criteria.ts 的 declared-id-readback)。apc/12 §0.6 记了实证:一份一条 cloud 命令都没跑的编造报告,在旧文本判据下 5/5 全绿。所以报告必须带下面这几类可机器解析的行:
TASK: <cloud task create 返回的 task id>
ASSET: <已在 metadata.assets.linkedAssetIds 里的 SPEC asset id> | role: spec
CRITERION: <cloud task acceptance 里的一个 criterion id>
META: intake.sourceSha = <你写进去的值> | type: string判据会判红的情况(任一):
TASK: 声明的 id 在服务端不存在(回读 404)——这正是「声称跑了但没跑」的指纹;createdAt 超过 maxAgeMinutes)——拿一个老 task 的 id 冒充不成立;metadata.kind=work_item,或 description 太短(dispatch 只喂 title/description + linkedAssetIds,描述空 = 下游 agent 看不到期望);ASSET: 声明的 id 不在 metadata.assets.linkedAssetIds 里——SPEC 没折进 dispatch;CRITERION: 声明的 id 不在 该 task 的 acceptance view 上,或该 task 一条 criterion 都没有;META: 的键在 metadata 里不存在、值与服务端存的不一致,或存储类型不是 string——--set 的数字化在这里被逮住,不靠你自述「我用了 --set-string」。回读凭据缺失(无 APC_READBACK_TOKEN / DEV_JWT / PRISMER_API_KEY)或 API 不可达 ⇒ 判红。「验不了」永远不算过。
⚠️ 回读凭据必须与真正跑命令的那个身份一致。
GET /api/im/tasks/:id的 ACL 是 creator / assignee / workspace 成员——换一个账号回读会 403(判据 fail-closed 判红,是假红)。实测踩过:cloudCLI 优先读~/.prismer/config.toml的api_key(先于PRISMER_API_KEYenv),于是 task 建在 A 账号名下、回读用 B 账号的 JWT ⇒ 403。跑验收时把APC_READBACK_TOKEN设成执行 agent 自己的凭据;APC_READBACK_BASE默认http://127.0.0.1:3000。
这些 id 必须从命令输出里原样复制,不要重打、不要凭记忆写——回读比对的是字节。
cloud task create 的 data.id + cloud task get 读回。cloud task get --json 的 metadata.assets.linkedAssetIds 含 SPEC asset id(服务端自动折的,不是本 skill 手动折)。cloud task acceptance --json 读回的 criteria 列表(每条 expectation + status)。metadata.intake.sourceSha 是字符串(读回确认,全数字 sha 也不被数字化)。不许:手动折 SPEC 进 linkedAssetIds(服务端已做);把两部分 epic silently 拆成多 task;用 --set 写 sha;断言聊天文本而非 metadata/criteria 副作用。
apc/05 §1 C1 诚实边界)。epic 分解需先经人拆分。spec-set 会服务端给 task 落 metadata.devEntryApprovalRequired=true(apc/03 §1「需求进入开发」门,服务端 task-spec.service.ts 自动,非你手动写)。该 flag 潜伏——仅当该 task 又绑了 feature/bugfix 卡(cardBound)时,首次 coding dispatch 前才 park 到 awaiting_approval 等人审「进开发」;非卡任务 flag 无效果、照常派发。所以本 skill 后续若走 09 §0 spec 段证据(「审批 进开发 decision」),请 cloud approval request-human 起该审批供人裁决。cloud skill ack 会 exit 3(无 task 上下文)——这是契约限制,报告里不得声称已 ack。它建的 task 是产物,不是它自己的 dispatch task。<!-- APC-ACK:v1 -->
执行本 skill 的第一步,先落一条调用回执:
cloud skill ack spec-intake --task "$PRISMER_TASK_ID"按退出码分流(这条命令的退出码是承重信息,禁止用 || 兜底、; true、
set +e 或重定向把它抹掉):
| exit | 含义 | 你要做的 |
|---|---|---|
0 | 回执已落库(im_task_logs.action='skill_ack') | 继续执行本 skill |
3 | 无 task 上下文——本次运行没有 task,产不出回执 | 继续执行本 skill;但本次运行没有回执,任何报告里都不得声称已 ack |
4 | 你不是该 task 的 assignee,服务端拒绝 | 停下并上报:回执只能由执行该 task 的 agent 产生 |
1 | 其它失败(网络 / 服务端) | 重试一次;仍失败则继续执行,并在结果里显式标注「回执缺失」 |
回执只证明本 skill 被调度,不证明执行正确——效果证明由本 skill 自己的 acceptanceCriteria 副作用断言承担(apc/04 §2 层 1 诚实标注)。
<!-- /APC-ACK:v1 -->
© Prismer-AI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in sdk/apc/skills/spec-intake of Prismer-AI/PrismerCloud.
Open the folder on GitHubat commit e5d9444
Spec Intake next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Spec Intake this skillPrismer-AI/PrismerCloud | 1.6k | — | ~1.8k | Automated safety check: Notes | MIT | |
| User Story Writerdeanpeters/Product-Manager-Skills | 7.2k | 2 repos | ~2.9k | Automated safety check: Pass | Custom licence | |
| Ralph Tui Create Beadssubsy/ralph-tui | 2.5k | 1 repos | ~2.6k | Automated safety check: Pass | MIT | |
| Agile Product Owneralirezarezvani/claude-skills | 28k | 3 repos | ~3.2k | Automated safety check: Pass | MIT | |
| Ralph Tui Create Beads Rustsubsy/ralph-tui | 2.5k | 1 repos | ~2.8k | Automated safety check: Pass | MIT | |
| To Specbestofjs/bestofjs | 3.1k | 21 repos | ~757 | Automated safety check: Pass | MIT |
deanpeters/Product-Manager-Skills
Writes user stories in Mike Cohn's format with Gherkin acceptance criteria, turning user needs into development-ready work with testable conditions.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution. An agent skill from subsy/ralph-tui.
alirezarezvani/claude-skills
Writes INVEST-checked user stories with acceptance criteria, splits epics, plans sprints from velocity and ranks the backlog with a weighted score.
subsy/ralph-tui
Convert PRDs to beads for ralph-tui execution using beads-rust (br CLI).
bestofjs/bestofjs
Turn the current conversation into a spec and publish it to the project issue tracker — no interview, just synthesis of what you've already discussed.
subsy/ralph-tui
Convert PRDs to prd.json format for ralph-tui execution. An agent skill from subsy/ralph-tui.
Prismer-AI/PrismerCloud
Gives an agent account-scoped access to Gmail, Calendar, Drive, Contacts, Docs and Sheets through the gws CLI or a bundled Python client.
Prismer-AI/PrismerCloud
Walks an agent through creating, importing, editing, validating, testing and publishing Prismer Skills with a fixed workflow and bundled scripts.
Prismer-AI/PrismerCloud
Operates a mailbox from the terminal with the external Himalaya CLI over IMAP, SMTP, Notmuch or Sendmail, separate from any built-in email gateway adapter.
Prismer-AI/PrismerCloud
Generates one image from a text prompt with a bundled Node.js helper and delivers it once as the attachment to the current Prismer reply.
Prismer-AI/PrismerCloud
Produces 3Blue1Brown-style explainer animations with Manim Community Edition for math, algorithms, equations and architecture diagrams, with planning and rendering references.
Prismer-AI/PrismerCloud
Creates or updates Prismer role templates from a persona, SOP or job description, and turns a role into a working agent that runs its first task through a bundled script.
Categories
Turn one atomic feature/gap request into a dispatchable task in a single pass — create the task, write SPEC.md (auto-folded into linkedAssetIds server-side), add acceptance criteria, record…. Spec Intake is an agent skill from Prismer-AI/PrismerCloud.md (auto-folded into linkedAssetIds server-side), add acceptance criteria, record provenance.
Spec Intake fits situations like: tasks that involve User stories; tasks that involve Backend development.
Run `npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a claude-code`. Or copy the skill folder (sdk/apc/skills/spec-intake in Prismer-AI/PrismerCloud) into .claude/skills/spec-intake in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a codex`. Or copy the skill folder (sdk/apc/skills/spec-intake in Prismer-AI/PrismerCloud) into .agents/skills/spec-intake in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Prismer-AI/PrismerCloud --skill spec-intake -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/spec-intake, .gemini/skills/spec-intake, .github/skills/spec-intake and .opencode/skills/spec-intake in your project.
Going by SKILL.md and its folder, Spec Intake needs credentials named APC_READBACK_TOKEN and PRISMER_API_KEY. Our summary lists: A credential in APC_READBACK_TOKEN; A credential in PRISMER_API_KEY. Its frontmatter pre-approves these tools: Bash. Compatibility (from SKILL.md): ["claude-code","prismer-sdk"].
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Spec Intake is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.8k tokens (SKILL.md is roughly 7.3k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Spec Intake: User Story Writer (deanpeters/Product-Manager-Skills, 7.2k stars), Ralph Tui Create Beads (subsy/ralph-tui, 2.5k stars), Agile Product Owner (alirezarezvani/claude-skills, 28k stars) and Ralph Tui Create Beads Rust (subsy/ralph-tui, 2.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Prismer-AI (a GitHub organization) maintains it in Prismer-AI/PrismerCloud, which has 1,555 GitHub stars. The repository holds 88 skills in this directory. The repository was last updated on September 30, 2026.
Source: Prismer-AI/PrismerCloud on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.