全部技能

writing-plans (obra/superpowers)

writing-plans:对照组 1.56、一句话提示 4.21、装 skill 4.43(0–5 分,Codex 实测,n=2/任务/组)。结论:推荐,相对不装 skill +2.87。

推荐安全

25.3 / 30

相对不装 skill 的提升:+2.87

推荐:总分 25.3/30 不低于 22,产出质量 4.4 不低于 3.5,提升 +2.87 不低于 +1.0。

前沿

通过

使用 Codex 测试。

覆盖 Codex, Claude Code

Codex CLI 0.166(SOTA 档):18 次评分运行。按我们的分档规则,这档通过同时覆盖 Claude Code;它不代表第二档的结果。

分数

每一维 0 到 5 分,六维相加是满分 30 的总分。每一维都是 5 更好。成本 5 表示又便宜又快。安装 5 表示容易。

触发可靠性
5.0
相对不装的提升
4.9
产出质量
4.4
令牌与时间成本
3.0
安装与可移植性
4.0
安全
4.0

安全审查

安全

静态扫描:0 CRITICAL / 0 HIGH / 0 MEDIUM。人工审查:可在断网沙箱中运行。扫描没有命中不等于绝对安全。

安装

npx skills@latest add obra/superpowers --skill writing-plans

来源

固定提交: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b

测试日期: 2026-11-02

我们测了什么

  • Plan due dates for a CLI — spec.md describes a feature for this small todo CLI. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.
  • Plan a CSV export — spec.md describes a feature for this report module. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.
  • Plan API rate limiting — spec.md describes a feature for this notes API. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.

优点

  • 平均分从不装时的 1.56 提到 4.43(+2.87)。
  • 不点名也会被触发:Skill file read in 6/6 treatment runs.

缺点

  • 测试说明:看到首轮分数后我们改了三条检查并按新规则重打了全部 18 次:占位符检查不再把 TODO 一词算作占位(它是其中一个任务里的产品名);“先写失败测试”和“期望输出”的匹配放宽到 “Expect failure” 之类写法;提交数和复选框的阈值调低。改前 skill 2.98、一句话提示 4.04,改后 4.43 和 4.21,对照组两种规则下都在 1.5 左右。
  • 每个任务每组 n=2,差距在 1 分以内属于噪声。

评测

在 Codex CLI(SOTA 档)上跑 3 个任务、对照、一句话提示、装 skill 三组,共 18 次运行,由规则脚本打分(没有 LLM 评委),断网沙箱、每次运行独立临时目录。具体做法见下方英文评测原文。

三组对比

组别平均分(0–5)每次 token
不装 skill1.5688k
一句话提示4.21127k
装了 skill4.43119k

Codex CLI 实测,18 次运行,规则脚本打分,没有 LLM 评委。总分 25.3 / 30,结论 推荐。

测试披露: 看到首轮分数后我们改了三条检查并按新规则重打了全部 18 次:占位符检查不再把 TODO 一词算作占位(它是其中一个任务里的产品名);“先写失败测试”和“期望输出”的匹配放宽到 “Expect failure” 之类写法;提交数和复选框的阈值调低。改前 skill 2.98、一句话提示 4.04,改后 4.43 和 4.21,对照组两种规则下都在 1.5 左右。

下面是评测原文,英文。

Verdict: Recommended (25.3 / 30). Source: obra/superpowers, skills/writing-plans, pinned at commit 2ce8aa1. Install: npx skills@latest add obra/superpowers --skill writing-plans. Licence: MIT (repo LICENSE).

What it is

The writing-plans skill (obra/superpowers): turn a spec into a bite-sized implementation plan: exact file paths, a failing test first, the exact run command with expected result, minimal implementation, a commit step per task, checkbox steps, no TBD placeholders.

How we tested

Codex CLI 0.166 (gpt-6-astra, low reasoning) on a dedicated Windows test PC, a fresh temporary project and temporary HOME/TMPDIR/caches per run, skill installed (treatment) or absent (control) or absent with the skill's core requirement squeezed into one sentence appended to the prompt (one-liner group), 2 runs per group per task, network off, /tmp writes blocked. The prompts never mention the skill (except the wording noted below).

Three small Python projects (todo CLI, report module, notes API), each with a spec.md. The prompt only asks for an implementation plan in plan.md and forbids writing code. It does not describe the plan format. The one-liner describes the whole format: bite-sized 2-5 minute steps, exact paths, failing test first with complete code, exact command with expected output, minimal implementation, git commit, no placeholders.

  1. Plan due dates for a CLI — spec.md describes a feature for this small todo CLI. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.
  2. Plan a CSV export — spec.md describes a feature for this report module. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.
  3. Plan API rate limiting — spec.md describes a feature for this notes API. Write the implementation plan for it to plan.md in this folder. Do not write any code in the project, the plan only.

Scoring is programmatic (hidden tests / planted-issue recall / constraint checks / render+OCR where relevant), 0–5 per run. No LLM judge decided any score.

Results

The one-liner given to the third group: "Write the plan as bite-sized tasks (each step 2-5 minutes): exact file paths, the failing test first with complete code, the exact command with its expected output, the minimal implementation with complete code, then a git commit step; no placeholders like TBD or 'add validation'."

TaskControl scoreOne-linerWith skillControl tokensOne-liner tokensWith-skill tokensSkill read
t1-todo-due1.514.214.2894k132k111k2/2
t2-csv-export1.714.474.884k129k122k2/2
t3-rate-limit1.453.954.2185k120k122k2/2

Mean score: 1.56 without vs 4.43 with the skill (delta +2.87). Tokens per run: 88k vs 119k (1.34x); time 66s vs 102s. One-liner group: 4.21 (the skill's gain over the one-liner: +0.22; one-liner's own gain over no skill: +2.65); one-liner tokens 127k per run, so the skill costs 0.93x the one-liner.

What happened

  • Control 1.56, skill 4.43, one-liner 4.21 (n=6 each). Control's plans are short prose outlines (46-71 lines): no failing-test-first steps, no expected output and no commit steps in any of 6 runs, and one run-command each.
  • Skill plans are 110-142 lines in a checkbox format with a failing-test step, a run step marked 'Expect failure' or 'Expect all tests to pass', and a task-level commit in the CSV task. They still have gaps: 4 of 6 runs have no git commit step, and code blocks appear in 2-3 steps rather than every step.
  • One-liner plans are about 350 lines with complete code in each step and all required commits and commands, but no checkboxes in 6/6 (a skill-specific format) and in 3 of 6 runs fewer than 4 run commands, since they used PowerShell wording.
  • Tokens: skill 119k, one-liner 127k, control 88k per run (1.35x control). The skill was read in 6/6 treatment runs.

Dimension scores

DimensionScoreWhy
1_output_quality4.43

Mean score 4.43/5 with the skill (programmatic checks, see per-task table).

2_lift_vs_no_skill4.87

+2.87 points vs 1.56 without the skill (n=2 per task; under ~1 point is noise).

3_trigger5.0Skill file read in 6/6 treatment runs.
4_instructions_portability4

SKILL.md in the superpowers format; refers to other superpowers skills for execution.

5_efficiency3

1.34x tokens (119k vs 88k per run) and 1.54x time (102s vs 66s).

6_safety_hygiene4Prose only; see security.md.

Limits of this test

  • Rule-based checks on the text of plan.md: counts of paths, commands, commits, checkboxes and code blocks. Plan quality, whether the plan would really work, was not judged.
  • I changed the checks after seeing the first scoring and re-scored every run under the same new rules: (1) the 'no placeholders' check matched the word TODO, which is the product name in the todo-CLI task (removed TODO from the pattern); (2) 'failing test first' and 'expected output' patterns were widened to accept 'Expect failure' and 'Expect all tests to pass'; (3) the commit threshold dropped from 3 to 2 (the skill plans have two tasks) and the checkbox threshold from 12 to 8. Before this change the skill scored 2.98 and the one-liner 4.04; after it, 4.43 and 4.21. Control stayed at 1.4-1.6 either way.
  • The checkbox check counts a format the skill uses and the one-liner never asked for, which favours the skill.
  • n=2 per cell; small fixtures.
  • n = 2 per group per task: differences under about 1 point are noise.
  • Rule-based scoring measures what the checks can see; it cannot judge taste or whether a result is the best possible.

Security

See security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Verdict: safe to run (no-network sandbox). A clean scan does not prove a skill safe.

Bottom line

Without help Codex writes a loose outline; with the skill it writes real TDD steps. A paragraph naming the same format does nearly as well and produces fuller code per step, so the skill is mainly a convenient bundle of that paragraph.

记录

Run log for writing-plans: Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.
Columns: task, arm-run, score (0-5), tokens, seconds, checks passed, skill files the agent opened.

t1-todo-due control-1: score 1.38, tokens 102848, secs 60.8, checks 3/10, opened nothing
t1-todo-due control-2: score 1.64, tokens 86724, secs 67.6, checks 3/10, opened nothing
t1-todo-due oneliner-1: score 4.47, tokens 133771, secs 130.1, checks 9/10, opened nothing
t1-todo-due oneliner-2: score 3.95, tokens 131546, secs 112.8, checks 8/10, opened nothing
t1-todo-due treatment-1: score 4.34, tokens 123893, secs 104.1, checks 8/10, opened writing-plans
t1-todo-due treatment-2: score 4.21, tokens 99712, secs 99.6, checks 8/10, opened writing-plans
t2-csv-export control-1: score 1.71, tokens 85021, secs 70.6, checks 4/10, opened nothing
t2-csv-export control-2: score 1.71, tokens 84700, secs 64.8, checks 4/10, opened nothing
t2-csv-export oneliner-1: score 4.47, tokens 129967, secs 119.6, checks 9/10, opened nothing

18 次运行、3 个产物

样例产物

前沿 · 装了 skill:plan.md(t1-todo-due,第 1 次,Codex)

# Todo Due Dates Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Add optional due dates, chronological listing, and an overdue-only CI check without migrating existing data. **Architecture:** Keep the existing JSON dictionary storage and implement date validation, ordering, and rendering in `todo/cli.py`. Capture the local date once per list invocation and pass it to a pure overdue predicate. Preserve the existing `main(argv=None)` entry point and argparse error handling. **Tech Stack:** Python standard library: argparse, datetime, json, unittest, unittest.mock, tempfile; no new dependencies. **Spec:** `spec.md` (read alongside this plan). ## Global Constraints - `todo add "title" --due 2026-03-01` stores an optional ISO due date with the item. - `todo list` prints overdue items first (marked `!`), then by due date, then undated items. - `todo list --overdue` prints only overdue items; exit code 1 if there are any (so CI can use it). - Invalid dates are rejected with a clear message and exit code 2. - Items already stored without a due date must keep working (no migration step for the user). ## Decisions for details not specified - Accept exactly `YYYY-MM-DD` with a real Gregorian calendar date; reject whitespace, compact dates, timestamps, and unpadded components. - An item is overdue only when unfinished and its due date is strictly before the current local date. Due today is not overdue. - Sort overdue items by ascending due date, then remaining dated items by ascending due date, then undated items. Preserve insertion order within equal keys. Completed items remain visible in ordinary listings but are never overdue. - Preserve `[ ] title` and `[x] title` for undated items. Append ` (due YYYY-MM-DD)` for dated items and prefix overdue lines with `! `, e.g. `! [ ] rent (due 2026-03-01)`. - Ordinary listing returns 0, even with overdue items. Overdue-only listing returns 0 with no output when none qualify. Listing never rewrites storage. - Store dates as strings under `due`; omit the key when not supplied. Treat an absent key or `null` as undated. Arbitrary corrupt JSON or malformed dates manually inserted into storage are outside this feature. ## Review Focus 1. Calendar boundaries: leap day is accepted only in leap years; impossible dates fail before storage changes (Task 1). 2. ISO-looking variants: compact dates, timestamps, whitespace, and unpadded dates are rejected (Task 1). 3. Midnight/today boundary: due today is not overdue; use one captured local date per listing (Task 2). 4. Completed items with past dates: remain visible without `!` and are excluded from overdue filtering (Tasks 2–3). 5. Legacy and tied items: missing/null dates work, ties retain insertion order, and listing leaves the JSON file untouched (Tasks 2–3). ## File Map - Modify `todo/cli.py`: add argument validation, optional date persistence, overdue predicate, sorting, rendering, and filter exit status. - Create `tests/test_cli.py`: isolated CLI tests u [... excerpt: first 3200 of 11517 characters]

查看 Pro