跳到正文
cccskills
免费在 GitHub 公开中文介绍

incremental-implementation

将跨多个文件的功能开发和改造拆成可验证的小步骤,反复进行实现、测试、验证与提交,让系统在每个阶段都保持可运行状态。

原文查看原文说明

Delivers changes incrementally in thin, verifiable slices. Use when implementing any feature or change that touches more than one file, or when picking up the next task from a plan. Use when rolling a change out behind a feature flag, when you're about to write a large amount of code at once, or when a task feels too big to land in one step.

AI 评分100分/ 100查看安装方法

适用场景

  • 实现跨多个文件的功能
  • 开始计划中的下一项任务
  • 通过功能开关隐藏未完成功能后集成
  • 优先验证不确定的部分

中文介绍

功能

这项技能将功能开发和代码改造拆成可验证的小步骤。每个阶段都进行实现、测试、验证和提交,在保持系统可运行的同时逐步扩大范围。它介绍了多种拆分方式:打通从数据库到界面的一项完整操作,先确定 API 规范,或先验证不确定的部分。技能也涵盖功能开关,用于控制功能是否向用户开放,让尚未完成的功能可以先集成而不展示给用户。

适用场景

适合涉及多个文件的改动,或无法一次完成的大型任务。从计划中开始下一项任务时,也能限定本次范围,避免混入无关修复。

使用示例

  • “请将计划中的下一项任务拆成可验证的小步骤并逐步实现。”
  • “请先只修改数据库和 API,检查测试与构建结果,界面留到下一阶段处理。”

注意事项

不适用于范围已经很小的工作,例如只修改单个文件中的一个小函数。验证使用目标项目自身的测试和构建命令,并根据需要执行类型检查和代码规范检查。

本介绍由 AI(OpenAI Codex)根据公开的 SKILL.md 撰写。准确的规格请查看下方原文。

客观评估

AI 仅根据 SKILL.md 的内容,从 4 个方面进行了评估。星标数和热度不计入评估。

指令清晰度能否看出何时使用、做什么
A良好明确面向跨多个文件的改动,并排除单个文件内范围极小的修改。
步骤具体性步骤、输入输出和示例是否具体
A良好提供实现、测试、验证、提交的流程,以及三种拆分方式和检查清单。
安全性发送数据、删除文件、执行命令等是否有说明
A良好规定限制改动范围、逐步验证、功能默认关闭,并为数据库迁移准备回滚迁移。
安装难易度所需工具和 API 密钥是否少且有说明
A良好要求使用项目自身的测试和构建命令,并提供不同技术栈的检查示例。

总分按每项 A=25 分、B=15 分、C=5 分相加。 由 AI(OpenAI Codex)于 2026年10月20日 评估。仅供参考,安装前请同时查看原文。

如果您认为评估有误,请申请复核

请写明哪一项有误以及原因。无需登录。我们会对照 SKILL.md 重新评估,并在此处更新结果。

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

包含的文件(1)

  • SKILL.md9.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Incremental Implementation

Overview

Build in thin vertical slices — implement one piece, test it, verify it, then expand. Avoid implementing an entire feature in one pass. Each increment should leave the system in a working, testable state. This is the execution discipline that makes large features manageable.

When to Use

  • Implementing any multi-file change
  • Building a new feature from a task breakdown
  • Refactoring existing code
  • Any time you're tempted to write more than ~100 lines before testing

When NOT to use: Single-file, single-function changes where the scope is already minimal.

The Increment Cycle

┌──────────────────────────────────────┐
│                                      │
│   Implement ──→ Test ──→ Verify ──┐  │
│       ▲                           │  │
│       └───── Commit ◄─────────────┘  │
│              │                       │
│              ▼                       │
│          Next slice                  │
│                                      │
└──────────────────────────────────────┘

For each slice:

  1. Implement the smallest complete piece of functionality
  2. Test — run the test suite (or write a test if none exists)
  3. Verify — confirm the slice works as expected (tests pass, build succeeds, manual check)
  4. Commit -- save your progress with a descriptive message (see git-workflow-and-versioning for atomic commit guidance)
  5. Move to the next slice — carry forward, don't restart

Slicing Strategies

Vertical Slices (Preferred)

Build one complete path through the stack:

Slice 1: Create a task (DB + API + basic UI)
    → Tests pass, user can create a task via the UI

Slice 2: List tasks (query + API + UI)
    → Tests pass, user can see their tasks

Slice 3: Edit a task (update + API + UI)
    → Tests pass, user can modify tasks

Slice 4: Delete a task (delete + API + UI + confirmation)
    → Tests pass, full CRUD complete

Each slice delivers working end-to-end functionality.

Contract-First Slicing

When backend and frontend need to develop in parallel:

Slice 0: Define the API contract (types, interfaces, OpenAPI spec)
Slice 1a: Implement backend against the contract + API tests
Slice 1b: Implement frontend against mock data matching the contract
Slice 2: Integrate and test end-to-end

Risk-First Slicing

Tackle the riskiest or most uncertain piece first:

Slice 1: Prove the WebSocket connection works (highest risk)
Slice 2: Build real-time task updates on the proven connection
Slice 3: Add offline support and reconnection

If Slice 1 fails, you discover it before investing in Slices 2 and 3.

Implementation Rules

Rule 0: Simplicity First

Before writing any code, ask: "What is the simplest thing that could work?"

After writing code, review it against these checks:

  • Can this be done in fewer lines?
  • Are these abstractions earning their complexity?
  • Would a staff engineer look at this and say "why didn't you just..."?
  • Am I building for hypothetical future requirements, or the current task?
SIMPLICITY CHECK:
✗ Generic EventBus with middleware pipeline for one notification
✓ Simple function call

✗ Abstract factory pattern for two similar components
✓ Two straightforward components with shared utilities

✗ Config-driven form builder for three forms
✓ Three form components

Three similar lines of code is better than a premature abstraction. Implement the naive, obviously-correct version first. Optimize only after correctness is proven with tests.

Rule 0.5: Scope Discipline

Touch only what the task requires.

Do NOT:

  • "Clean up" code adjacent to your change
  • Refactor imports in files you're not modifying
  • Remove comments you don't fully understand
  • Add features not in the spec because they "seem useful"
  • Modernize syntax in files you're only reading

If you notice something worth improving outside your task scope, note it — don't fix it:

NOTICED BUT NOT TOUCHING:
- src/utils/format.ts has an unused import (unrelated to this task)
- The auth middleware could use better error messages (separate task)
→ Want me to create tasks for these?

Rule 1: One Thing at a Time

Each increment changes one logical thing. Don't mix concerns:

Bad: One commit that adds a new component, refactors an existing one, and updates the build config.

Good: Three separate commits — one for each change.

Rule 2: Keep It Compilable

After each increment, the project must build and existing tests must pass. Don't leave the codebase in a broken state between slices.

Rule 3: Feature Flags for Incomplete Features

If a feature isn't ready for users but you need to merge increments:

// Feature flag for work-in-progress
const ENABLE_TASK_SHARING = process.env.FEATURE_TASK_SHARING === 'true';

if (ENABLE_TASK_SHARING) {
  // New sharing UI
}

This lets you merge small increments to the main branch without exposing incomplete work.

Rule 4: Safe Defaults

New code should default to safe, conservative behavior:

// Safe: disabled by default, opt-in
export function createTask(data: TaskInput, options?: { notify?: boolean }) {
  const shouldNotify = options?.notify ?? false;
  // ...
}

Rule 5: Rollback-Friendly

Each increment should be independently revertable:

  • Additive changes (new files, new functions) are easy to revert
  • Modifications to existing code should be minimal and focused
  • Database migrations should have corresponding rollback migrations
  • Avoid deleting something in one commit and replacing it in the same commit — separate them

Working with Agents

When directing an agent to implement incrementally:

"Let's implement Task 3 from the plan.

Start with just the database schema change and the API endpoint.
Don't touch the UI yet — we'll do that in the next increment.

After implementing, run the repository's test and build commands to
verify nothing is broken."

Be explicit about what's in scope and what's NOT in scope for each increment.

Increment Checklist

After each increment, verify with the repository's own commands (see the test-driven-development skill's Discover the Stack First section):

  • The change does one thing and does it completely
  • All existing tests still pass (the repository's test command: npm test, ./gradlew test, pytest, ...)
  • The build succeeds (the repository's build command)
  • Type checking passes, where the stack has one (npx tsc --noEmit, mypy, ...)
  • Linting passes (the repository's lint command)
  • The new functionality works as expected
  • The change is committed with a descriptive message

Note: Run each verification command after a change that could affect it. After a successful run, don't repeat the same command unless the code has changed since — re-running on unchanged code adds no information.

Common Rationalizations

RationalizationReality
"I'll test it all at the end"Bugs compound. A bug in Slice 1 makes Slices 2-5 wrong. Test each slice.
"It's faster to do it all at once"It feels faster until something breaks and you can't find which of 500 changed lines caused it.
"These changes are too small to commit separately"Small commits are free. Large commits hide bugs and make rollbacks painful.
"I'll add the feature flag later"If the feature isn't complete, it shouldn't be user-visible. Add the flag now.
"This refactor is small enough to include"Refactors mixed with features make both harder to review and debug. Separate them.
"Let me run the build command again just to be sure"After a successful run, repeating the same command adds nothing unless the code has changed since. Run it again after subsequent edits, not as reassurance.

Red Flags

  • More than 100 lines of code written without running tests
  • Multiple unrelated changes in a single increment
  • "Let me just quickly add this too" scope expansion
  • Skipping the test/verify step to move faster
  • Build or tests broken between increments
  • Large uncommitted changes accumulating
  • Building abstractions before the third use case demands it
  • Touching files outside the task scope "while I'm here"
  • Creating new utility files for one-time operations
  • Running the same build/test command twice in a row without any intervening code change

Verification

After completing all increments for a task:

  • Each increment was individually tested and committed
  • The full test suite passes
  • The build is clean
  • The feature works end-to-end as specified
  • No uncommitted changes remain

See Also

Per-increment verification is the local check. Before declaring a task done, apply the project-wide Definition of Done as the final gate, the standing bar every increment clears regardless of the task. See ../../references/definition-of-done.md.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

api-and-interface-design

免费有简介AI 评分 100分

在实现前定义 API 和模块之间的输入输出,统一命名、错误格式与输入校验,并考虑现有调用方的兼容性及重试造成的重复处理。

  • 设计新的 REST API
  • 定义界面与服务器的数据规范
  • 在保持兼容的前提下扩展 API
addyosmani/agent-skills10.9万2026年10月14日 更新

browser-testing-with-devtools

免费有简介AI 评分 100分

在真实浏览器中验证页面显示与操作,检查错误、网络通信和加载速度,并比较修复前后的截图、确认无障碍支持。

  • 排查布局与样式问题
  • 检查浏览器错误与API通信
  • 比较修复前后的页面
addyosmani/agent-skills10.9万2026年10月14日 更新

ci-cd-and-automation

免费有简介AI 评分 80分

自动执行代码变更后的测试、类型检查和构建,建立发布前的质量检查流程。涵盖GitHub Actions配置、分阶段发布和回滚步骤,也介绍失败排查与运行提速。

  • 为新项目引入CI
  • 自动执行测试和质量检查
  • 设计分阶段发布与回滚流程
addyosmani/agent-skills10.9万2026年10月14日 更新

code-review-and-quality

免费有简介AI 评分 90分

在合并前从正确性、可读性、架构、安全和性能五个维度审查代码变更,检查测试是否恰当,区分必须修复的问题与可选建议,并提出具体改进方法。

  • 合并前审查拉取请求
  • 检查人工智能编写的代码
  • 评估重构是否带来改善
addyosmani/agent-skills10.9万2026年10月14日 更新

code-simplification

免费有简介AI 评分 100分

在保持行为不变的前提下,整理深层条件分支、长函数、重复逻辑和含糊命名。先检查现有规范与测试,再以可读性为标准逐步修改。

  • 改善已正常运行功能的代码可读性
  • 处理代码审查指出的复杂逻辑
  • 整理深层条件分支和长函数
addyosmani/agent-skills10.9万2026年10月14日 更新

constraint-driven-development

免费有简介AI 评分 80分

将项目质量标准及其数值、理由和检查方法写入文档,并从差异中检查跳过测试、抑制警告或降低门槛的改动,维持智能体开发质量。

  • 制定智能体开发的质量标准
  • 选择覆盖率与性能目标
  • 发现跳过测试或抑制警告
addyosmani/agent-skills10.9万2026年10月14日 更新

查看 addyosmani 的全部技能

报告此技能的问题