一键导入
acai
Mandatory - you must load the acai skill to learn the acai.sh process for spec-driven development whether planning, implementing, or reviewing code.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Mandatory - you must load the acai skill to learn the acai.sh process for spec-driven development whether planning, implementing, or reviewing code.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | acai |
| description | Mandatory - you must load the acai skill to learn the acai.sh process for spec-driven development whether planning, implementing, or reviewing code. |
We follow spec-driven development using acai.sh conventions. We write feature.yaml spec docs as the source of truth for intended behavior, acceptance criteria, and important constraints.
Specs are law. Derive all code, tests, and docs from these specs.
Specs are always in <my-feature>.feature.yaml files.
Each requirement in the spec has a stable ID e.g. my-feature.COMPONENT.1-1 or my-feature.CONSTRAINT.2. We call these ACIDs (Acceptance Criteria ID)
feature:
name: my-feature
product: my-website
description: This is an example feature
components:
EXAMPLE:
requirements:
1: The ACID for this requirement is `my-feature.EXAMPLE.1`
# Simply reference them in code comments or other specs by full ACID only:
# my-feature.EXAMPLE.1
AUTH:
requirements:
1: The ACID for this requirement is `my-feature.AUTH.1`
1-1: This is a sub-requirement `my-feature.AUTH.1-1`
2:
requirement: Reqs can be deprecated, to avoid renumbering ACIDs and retain a decision log
deprecated: true
constraints:
MISC:
description: Constraints are for cross-cutting or under-the-hood requirements.
requirements:
1: Constraints also have ACIDs e.g. `my-feature.MISC.1`
1-note: Notes help us attach additional context to a requirement
1-1-1: INVALID - this sub-sub requirement is not allowed. Keep sub-requirements 1 level deep (`parent-child`)
As shown above;
When planning tasks: -> Review the state of the implementation; search by ACID to understand how well-aligned the code is to the spec. -> Always list every ACID to be satisfied in that task, with their complete ACID and requirement text.
When writing code: -> For important code blocks, include ACID references in comments, to help us understand "why" that code was written. -> Never do partial ACIDs, they are too difficult to search. Full ACID only. -> Never duplicate the requirement / criteria text outside of the spec. Just use the ID alone.
When writing tests: -> Aim for at least one unit test for every ACID (avoid lists, partial ACIDs, or broad coverage tags). -> Include the ACIDs in the test names for discoverability (usually the one or few ACIDs that test directly proves). -> Do not dump long ACID lists anywhere.
When writing specs (feature.yaml):
-> Never renumber requirements, because the ID should be stable. Prefer to use the deprecated flag rather than removing them.
-> Specs are pure, simple, concise, behavior focused, outcome-oriented. Only functionality, never design nor style nor status.
-> Spec requirements are usually testable in E2E or unit tests.
-> Always better to under-specify than over-specify (omit obvious requirements).
-> Prefer to keep engineering, plumbing and under-the-hood details in the constraints: section of the spec.
-> Specs go in /features//.feature.yaml
Always go the extra mile to keep the code, ACID refs, and specs fully aligned.
We avoid adding new behavior or changing behavior without first changing the spec.
Feel free to ask; "Should I update the spec first?"
Halt and notify me when specs are misaligned with code or when a prompt deviates from spec.