Skip to content

Commit c56e741

Browse files
committed
docs: align TFD candidate with YAML teams
1 parent e72f717 commit c56e741

7 files changed

Lines changed: 162 additions & 123 deletions

File tree

.github/workflows/ci.yml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,3 @@ jobs:
2424
- name: Run plugin tests
2525
working-directory: plugins/tfd
2626
run: python3 -m unittest discover -s scripts -p 'test_*.py' -v
27-
- name: Check TFD hard budgets
28-
run: python3 scripts/check_tfd_budgets.py
29-
- name: Verify local candidate
30-
run: python3 scripts/release_preflight.py

CHANGELOG.md

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,18 @@ All notable public changes to Team First Development are documented here.
55
## Unreleased
66

77
- **Breaking 3.0.0 local candidate:** replace the four-Skill v2 control plane
8-
with one Skill, the suitability-first `tfd:using-tfd`, and a six-step workflow.
9-
- Route simple work to one Agent and keep normal TFD work session-only; make
10-
SQLite high assurance an explicitly approved option at `.tfd/state.db`.
11-
- Report legacy Workspace v1 as `LEGACY_READ_ONLY` without automatic migration
12-
or writes, and expose five commands only as internal recovery and
13-
orchestration support.
14-
- Replace release automation with a local candidate verifier and keep
15-
installation, merge, push, tag, release, and external actions behind
16-
separate approval.
8+
with the suitability-first `tfd:using-tfd` and project-local YAML team
9+
profiles.
10+
- Configure reusable teams and named members without creating Agents; select
11+
at most one team and its minimum useful member subset for each requirement.
12+
- Require exact `spawn_agent` model choices and exact locally installed Skill
13+
names; stop on missing dependencies or initialization failure without
14+
substitution or fallback.
15+
- Remove persistent task state, state lifecycle, recovery, and management
16+
commands; retain only an optional final delivery receipt as a human-readable
17+
trace.
18+
- Keep `3.0.0` a local source candidate and preserve separate approval for
19+
installation, merge, push, tag, release, publication, and external actions.
1720

1821
## 2.1.3 - 2026-07-26
1922

README-CN.md

Lines changed: 60 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,95 +4,106 @@
44

55
[English](README.md)
66

7-
Team First Development(TFD)是一套选择性使用的 Codex 团队开发方法。它围绕
8-
用户预期结果组建最小充分团队,按职责隔离上下文,通过明确交接、独立评审和有
9-
证据的交付提升完成质量。
7+
Team First Development(TFD)是一套选择性使用的 Codex 团队开发方法。它通过
8+
目标对齐、模型与职责匹配、聚焦上下文和独立审核,改善一个边界明确的开发结果。
109

1110
当前检出目录是 `3.0.0` 本地候选版本,不是正式发布。
1211

13-
## 使用方法
12+
## 使用
1413

15-
显式调用 `tfd:using-tfd`
14+
显式调用唯一的 Skill:
1615

1716
```text
1817
Use tfd:using-tfd to complete this development task.
1918
```
2019

21-
TFD 会先判断协作收益是否高于协调成本。只有任务包含可分离的专业职责,或风险
22-
要求实现者与评审者分离,且相关上下文可以按职责划分、预期收益大于协调与交接
23-
成本时,才建议组队;否则路由给单 Agent。用户在知晓成本后仍可明确强制使用
24-
TFD。
20+
TFD 首先判断协作收益是否高于协调成本。简单任务由单 Agent 完成,不读取或写入
21+
`.tfd/`。当任务包含可分离的专业职责,或风险确实要求独立审核时,才考虑使用
22+
项目已配置的团队。
2523

26-
简单任务默认由单 Agent 处理,并保持 session-only。常规 TFD 团队流程同样是
27-
session-only:不依赖 `.tfd/`,也不持久化项目状态。
24+
## 项目团队
2825

29-
## 可选高保证状态
26+
项目创建时可以定义可复用的团队和成员资料:
3027

31-
高保证状态是可选能力,需要明确批准,并通过 Python 标准库 SQLite 写入
32-
`.tfd/state.db`。它适用于跨会话继续、持久决策或评审证据、多日或实质并发
33-
协作、较高变更风险,或用户明确要求本地持久状态的任务。
28+
```text
29+
.tfd/
30+
├── manifest.yaml
31+
├── product-team/
32+
│ ├── team.yaml
33+
│ ├── members/
34+
│ │ ├── alice.yaml
35+
│ │ └── bob.yaml
36+
│ └── receipts/
37+
└── platform-team/
38+
├── team.yaml
39+
└── members/
40+
└── tingting.yaml
41+
```
3442

35-
仅存在 `.tfd/` 不会自动启用高保证状态。旧 Workspace v1 会报告为
36-
`LEGACY_READ_ONLY`,绝不自动迁移,也绝不会被 v3 状态层写入。仍需要旧控制面
37-
的用户可以停留在冻结的 v2.1.3 标签。
43+
`manifest.yaml` 只索引团队目录。每个 `team.yaml` 保存团队名称、用途、成员 ID,
44+
以及可选的 `trace: delivery_receipt` 策略。每位成员都有一个以人物名字命名的
45+
`members/<name>.yaml`
46+
47+
```yaml
48+
display_name: Alice
49+
responsibility: Implement the agreed product scope
50+
expected_output: A runnable and verified result
51+
model: gpt-5.6-sol
52+
skills:
53+
- superpowers:test-driven-development
54+
agency_role: backend-architect
55+
```
3856
39-
## 内部状态操作
57+
`agency_role` 只是可选的一次性来源记录。TFD 不安装或运行 agency-agents,不
58+
同步人物卡,也不批量导入角色。
4059

41-
可选状态 CLI 只有五个操作:
60+
项目创建只配置资料,不创建 Agent。每个开发需求最多选择一个已配置团队,再从
61+
中选择覆盖计划所需的最小成员子集。经常需要的跨职能组合应单独配置成一个团队。
4262

43-
- `inspect` 报告缺失、有效、阻塞或 legacy read-only 状态。
44-
- `init` 创建已批准的最小 SQLite 数据库。
45-
- `task-open` 创建一个已批准的高保证任务。
46-
- `task-update` 执行一次 revision-safe 更新或状态转换。
47-
- `record-add` 追加一条有类型的非转换记录。
63+
创建成员前,配置的模型必须与当前 `spawn_agent` 明确暴露的选项完全一致,配置
64+
的每个 Skill 也必须以相同名称安装在本机。依赖缺失或精确模型初始化失败时立即
65+
停止。TFD 不扫描账户模型、不安装 Skill、不替换模型,也不静默降级。
4866

49-
这些操作只是内部恢复与编排支持,不是五套用户工作流。请从 `plugins/tfd`
50-
目录运行,以确保 Python 导入插件自己的 `scripts` 包:
67+
完整最小示例见
68+
[`plugins/tfd/examples/project-tfd`](plugins/tfd/examples/project-tfd)。
5169

52-
```bash
53-
cd plugins/tfd
54-
python3 -m scripts.tfd_state.cli inspect --project-root /path/to/project
55-
```
70+
## 交付回执
71+
72+
只有所选团队配置了 `trace: delivery_receipt`,TFD 才在最终交付后写一份简短
73+
Markdown 回执。内容仅包括交付结果、成员与贡献、结果引用、验证和独立审核结果,
74+
以及未解决事项。
75+
76+
回执只是便于人阅读的工作痕迹,不是运行时权威或可恢复状态。TFD 不保存任务
77+
数据库、进度日志、事件流,不维护回执索引,也不提供管理 CLI。
5678

5779
## 授权边界
5880

59-
TFD 工作流批准不授权安装、合并、推送、打标签、发布和外部动作;每一项都需要
60-
分别明确批准。部署、公开发布、删除、特权命令、付费动作、外部消息、迁移和破
61-
坏性清理也遵循同一边界。
81+
TFD 工作流批准不授权安装、合并、推送、打标签、发布、部署、对外消息、破坏性
82+
清理、特权命令、付费动作或扩大范围;这些动作继续遵循各自的正常审批边界。
6283

63-
当前检出目录中的 `3.0.0` 元数据只表示本地候选版本。不能从本地测试或
64-
preflight 结果推断已经存在标签、marketplace 安装、GitHub Release 或部署产物。
84+
当前 `3.0.0` 元数据只表示本地候选版本。不能从本地测试推断已经存在标签、安装、
85+
GitHub Release 或部署产物。
6586

6687
## 仓库结构
6788

6889
```text
69-
.agents/plugins/marketplace.json 本地候选 marketplace 元数据
7090
plugins/tfd/.codex-plugin/plugin.json 插件清单
7191
plugins/tfd/skills/using-tfd/SKILL.md 唯一用户 Skill
72-
plugins/tfd/scripts/tfd_state/ 可选 SQLite 状态层
73-
scripts/check_tfd_budgets.py 硬预算检查器
74-
scripts/release_preflight.py 本地候选检查器
92+
plugins/tfd/examples/project-tfd/ 最小 YAML 团队示例
93+
scripts/test_plugin_contract.py 包结构契约
7594
```
7695

7796
## 本地验证
7897

79-
需要 Python 3.10 或更高版本。PyYAML 只供元数据测试使用;运行时状态包仅使用
80-
Python 标准库。
98+
测试需要 Python 3.10 或更高版本以及 PyYAML。
8199

82100
```bash
83101
python3 -m pip install -r requirements.txt
84102
python3 -m unittest discover -s scripts -p 'test_*.py' -v
85103
cd plugins/tfd
86104
python3 -m unittest discover -s scripts -p 'test_*.py' -v
87-
cd ../..
88-
python3 scripts/check_tfd_budgets.py
89-
python3 scripts/release_preflight.py
90105
```
91106

92-
preflight 只做本地检查。成功时输出
93-
`{"ok":true,"status":"LOCAL_CANDIDATE","version":"3.0.0"}`;它不会授权或执行
94-
安装、暂存、网络访问、cachebuster 更新、打标签、推送或发布。
95-
96107
## 许可证
97108

98109
[MIT](LICENSE)

README.md

Lines changed: 68 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -4,104 +4,115 @@
44

55
[中文简介](README-CN.md)
66

7-
Team First Development (TFD) is a selective Codex team-development method. It
8-
aligns a minimum-sufficient team to the user's intended outcome, partitions
9-
context by responsibility, coordinates explicit handoffs, and requires
10-
independent review and evidence-backed delivery.
7+
Team First Development (TFD) is a selective Codex team-development method.
8+
It improves a bounded development result through alignment, model-role fit,
9+
focused context, and independent review.
1110

1211
This checkout is the `3.0.0` local candidate. It is not a release.
1312

1413
## Use
1514

16-
Call `tfd:using-tfd` explicitly.
15+
Call the single Skill explicitly:
1716

1817
```text
1918
Use tfd:using-tfd to complete this development task.
2019
```
2120

22-
TFD first decides whether collaboration is worth its coordination cost. It
23-
recommends a team only when the task has separable professional
24-
responsibilities or needs implementer/reviewer separation, relevant context can
25-
be partitioned, and the expected benefit exceeds coordination and handoff cost.
26-
Otherwise, it routes the task to one Agent. A user may still force TFD after
27-
the cost is disclosed.
21+
TFD first decides whether collaboration is worth its coordination cost.
22+
Simple work stays with one Agent and does not read or write `.tfd/`. Work with
23+
separable professional responsibilities, or enough risk to require an
24+
independent reviewer, may use a project-configured team.
2825

29-
Simple work stays solo and session-only. The normal TFD team workflow is also
30-
session-only: it does not depend on `.tfd/` and does not persist project state.
26+
## Project teams
3127

32-
## Optional high assurance
28+
Project setup may define reusable team and member profiles:
3329

34-
High-assurance state is optional, requires explicit approval, and uses the
35-
Python standard-library SQLite engine at `.tfd/state.db`. It is appropriate for
36-
cross-session continuation, durable decision or review evidence, multi-day or
37-
materially concurrent work, elevated change risk, or an explicit request for
38-
durable local state.
30+
```text
31+
.tfd/
32+
├── manifest.yaml
33+
├── product-team/
34+
│ ├── team.yaml
35+
│ ├── members/
36+
│ │ ├── alice.yaml
37+
│ │ └── bob.yaml
38+
│ └── receipts/
39+
└── platform-team/
40+
├── team.yaml
41+
└── members/
42+
└── tingting.yaml
43+
```
3944

40-
The presence of `.tfd/` alone does not activate high assurance. Legacy
41-
Workspace v1 is reported as `LEGACY_READ_ONLY` and is never migrated automatically
42-
or written by the v3 state layer. Users needing the legacy control plane can
43-
remain on the frozen v2.1.3 tag.
45+
`manifest.yaml` indexes team directories. Each `team.yaml` contains the team
46+
name, purpose, member IDs, and an optional `trace: delivery_receipt` policy.
47+
Each named member has a `members/<name>.yaml` profile:
48+
49+
```yaml
50+
display_name: Alice
51+
responsibility: Implement the agreed product scope
52+
expected_output: A runnable and verified result
53+
model: gpt-5.6-sol
54+
skills:
55+
- superpowers:test-driven-development
56+
agency_role: backend-architect
57+
```
4458
45-
## Internal state operations
59+
`agency_role` is optional one-time provenance. TFD does not install or run
60+
agency-agents, synchronize personas, or bulk-import roles.
4661

47-
The optional state CLI has exactly five operations:
62+
Project setup creates profiles, not Agents. For each requirement, TFD selects
63+
at most one configured team and its minimum useful member subset. A recurring
64+
cross-functional composition should be configured as its own team.
4865

49-
- `inspect` reports absent, valid, blocked, or legacy read-only state.
50-
- `init` creates the approved minimal SQLite database.
51-
- `task-open` creates one approved high-assurance task.
52-
- `task-update` applies one revision-safe update or transition.
53-
- `record-add` appends one typed, non-transition record.
66+
Before member creation, the configured model must be an exact choice exposed
67+
by the current `spawn_agent` runtime, and every configured Skill must be
68+
installed locally under its exact name. Missing dependencies or exact-model
69+
initialization failures stop formation. TFD does not scan account models,
70+
install Skills, substitute models, or fall back silently.
5471

55-
These operations are internal recovery and orchestration support, not five user workflows.
56-
Run them from `plugins/tfd` so Python imports the plugin's `scripts` package:
72+
See [`plugins/tfd/examples/project-tfd`](plugins/tfd/examples/project-tfd) for
73+
the complete minimal example.
5774

58-
```bash
59-
cd plugins/tfd
60-
python3 -m scripts.tfd_state.cli inspect --project-root /path/to/project
61-
```
75+
## Delivery receipts
76+
77+
When the selected team sets `trace: delivery_receipt`, TFD writes one short
78+
Markdown receipt after final delivery. It records only the outcome, selected
79+
members and contributions, result reference, verification and review result,
80+
and unresolved items.
81+
82+
A receipt is a human-readable trace, not runtime authority or resumable state.
83+
TFD keeps no task database, progress log, event stream, receipt index, or
84+
management CLI.
6285

6386
## Authority boundary
6487

65-
TFD workflow approval does not authorize installation, merge, push, tag, release, and external actions.
66-
Each requires separate explicit approval, as do deployment, publishing,
67-
deletion, privileged commands, paid actions, external messages, migration, and
68-
destructive cleanup.
88+
TFD workflow approval does not authorize installation, merge, push, tag,
89+
release, deployment, publication, external messages, destructive cleanup,
90+
privileged commands, paid actions, or scope expansion. Each keeps its normal
91+
approval boundary.
6992

70-
The `3.0.0` metadata in this checkout identifies only a local candidate. Do not
71-
infer a tag, marketplace installation, GitHub Release, or deployed artifact
72-
from local tests or preflight output.
93+
The `3.0.0` metadata identifies only a local candidate. Do not infer a tag,
94+
installation, GitHub Release, or deployment from local tests.
7395

7496
## Repository layout
7597

7698
```text
77-
.agents/plugins/marketplace.json Local candidate marketplace metadata
7899
plugins/tfd/.codex-plugin/plugin.json Plugin manifest
79100
plugins/tfd/skills/using-tfd/SKILL.md Single user-facing Skill
80-
plugins/tfd/scripts/tfd_state/ Optional SQLite state layer
81-
scripts/check_tfd_budgets.py Hard-budget verifier
82-
scripts/release_preflight.py Local-candidate verifier
101+
plugins/tfd/examples/project-tfd/ Minimal YAML team example
102+
scripts/test_plugin_contract.py Package contract
83103
```
84104

85105
## Local verification
86106

87-
Python 3.10 or newer is required. PyYAML is used only by metadata tests; the
88-
runtime state package uses only the Python standard library.
107+
Python 3.10 or newer and PyYAML are required for tests.
89108

90109
```bash
91110
python3 -m pip install -r requirements.txt
92111
python3 -m unittest discover -s scripts -p 'test_*.py' -v
93112
cd plugins/tfd
94113
python3 -m unittest discover -s scripts -p 'test_*.py' -v
95-
cd ../..
96-
python3 scripts/check_tfd_budgets.py
97-
python3 scripts/release_preflight.py
98114
```
99115

100-
The preflight is local-only. Its successful result is
101-
`{"ok":true,"status":"LOCAL_CANDIDATE","version":"3.0.0"}`; it does not
102-
authorize or perform installation, staging, network access, cachebuster
103-
updates, tagging, pushing, or release work.
104-
105116
## License
106117

107118
[MIT](LICENSE)

docs/superpowers/specs/2026-07-28-tfd-slimming-design.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TFD Slimming Design
22

3-
**Status:** Written specification awaiting user review
3+
**Status:** Approved; implemented as a local source candidate
44
**Date:** 2026-07-28
55
**Scope:** Replace TFD with a session-first team workflow backed only by
66
project-local YAML team profiles.

plugins/tfd/.codex-plugin/plugin.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "tfd",
33
"version": "3.0.0",
4-
"description": "Suitability-first team development with optional local high-assurance state.",
4+
"description": "Session-first team development with project-local YAML team profiles.",
55
"author": {
66
"name": "Howe829",
77
"url": "https://github.com/Howe829"
@@ -13,8 +13,8 @@
1313
"skills": "./skills/",
1414
"interface": {
1515
"displayName": "Team First Development",
16-
"shortDescription": "先判断协作价值,再组最小充分团队",
17-
"longDescription": "Route simple work to one Agent, or align and coordinate a minimum-sufficient team with independent review and evidence-backed delivery.",
16+
"shortDescription": "按需求从 YAML 配置组建最小团队",
17+
"longDescription": "Route simple work to one Agent, or select one configured team and its minimum useful members for session-scoped delivery and independent review.",
1818
"developerName": "Howe829",
1919
"category": "Developer Tools",
2020
"capabilities": ["Interactive", "Write"],

0 commit comments

Comments
 (0)