@stofone/dsh-agent-roster 0.9.2 → 0.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +80 -5
  3. package/README.zh.md +73 -6
  4. package/bin/cli.mjs +228 -2
  5. package/docs/roster-v2.md +220 -0
  6. package/examples/dist/core-review-1.0.0.json +160 -0
  7. package/examples/dist/research-0.1.0.json +95 -0
  8. package/examples/roles/core-review-correctness/AGENT.md +20 -0
  9. package/examples/roles/core-review-lead/AGENT.md +23 -0
  10. package/examples/roles/core-review-lead-captain/AGENT.md +13 -0
  11. package/examples/roles/core-review-maintainer/AGENT.md +20 -0
  12. package/examples/roles/research-scout/AGENT.md +16 -0
  13. package/examples/roles/research-verifier/AGENT.md +16 -0
  14. package/examples/rosters/core-review/roster.yaml +39 -0
  15. package/examples/rosters/research/roster.yaml +20 -0
  16. package/examples-orchestration/dist/core-review-1.0.0.json +185 -0
  17. package/examples-orchestration/dist/core-review-1.0.0.tasks.json +76 -0
  18. package/examples-orchestration/roles/fixer/AGENT.md +18 -0
  19. package/examples-orchestration/roles/lead/AGENT.md +18 -0
  20. package/examples-orchestration/roles/reviewer/AGENT.md +23 -0
  21. package/examples-orchestration/roles/reviewer/parts/checklist.md +6 -0
  22. package/examples-orchestration/rosters/core-review/overrides/fixer.md +1 -0
  23. package/examples-orchestration/rosters/core-review/roster.yaml +43 -0
  24. package/index.js +8 -1
  25. package/lib/compile2.js +522 -0
  26. package/lib/format-v2.js +196 -0
  27. package/lib/frontmatter.js +113 -0
  28. package/lib/migrate.js +326 -0
  29. package/lib/plan.js +167 -0
  30. package/lib/registry.js +65 -11
  31. package/lib/role.js +498 -0
  32. package/lib/roster2.js +591 -0
  33. package/lib/run.js +188 -0
  34. package/lib/write.js +14 -8
  35. package/orgs/agent-roster-collective/dist/api-design-1.0.0.json +130 -0
  36. package/orgs/agent-roster-collective/dist/content-ops-1.0.0.json +130 -0
  37. package/orgs/agent-roster-collective/dist/contract-review-1.0.0.json +130 -0
  38. package/orgs/agent-roster-collective/dist/data-quality-1.0.0.json +130 -0
  39. package/orgs/agent-roster-collective/dist/db-migration-1.0.0.json +130 -0
  40. package/orgs/agent-roster-collective/dist/docs-writer-1.0.0.json +130 -0
  41. package/orgs/agent-roster-collective/dist/finance-recon-1.0.0.json +130 -0
  42. package/orgs/agent-roster-collective/dist/frontend-ui-1.0.0.json +130 -0
  43. package/orgs/agent-roster-collective/dist/i18n-l10n-1.0.0.json +130 -0
  44. package/orgs/agent-roster-collective/dist/incident-response-1.0.0.json +130 -0
  45. package/orgs/agent-roster-collective/dist/literature-review-1.0.0.json +130 -0
  46. package/orgs/agent-roster-collective/dist/market-research-1.0.0.json +130 -0
  47. package/orgs/agent-roster-collective/dist/ml-eval-1.0.0.json +130 -0
  48. package/orgs/agent-roster-collective/dist/performance-1.0.0.json +130 -0
  49. package/orgs/agent-roster-collective/dist/product-discovery-1.0.0.json +130 -0
  50. package/orgs/agent-roster-collective/dist/qa-regression-1.0.0.json +130 -0
  51. package/orgs/agent-roster-collective/dist/recruiting-1.0.0.json +130 -0
  52. package/orgs/agent-roster-collective/dist/release-manager-1.0.0.json +130 -0
  53. package/orgs/agent-roster-collective/dist/security-audit-1.0.0.json +132 -0
  54. package/orgs/agent-roster-collective/dist/sre-oncall-1.0.0.json +130 -0
  55. package/orgs/agent-roster-collective/dist/support-triage-1.0.0.json +130 -0
  56. package/orgs/agent-roster-collective/roles/api-design-failure-mode/AGENT.md +19 -0
  57. package/orgs/agent-roster-collective/roles/api-design-lead/AGENT.md +19 -0
  58. package/orgs/agent-roster-collective/roles/api-design-schema/AGENT.md +20 -0
  59. package/orgs/agent-roster-collective/roles/content-ops-distributor/AGENT.md +19 -0
  60. package/orgs/agent-roster-collective/roles/content-ops-editor/AGENT.md +19 -0
  61. package/orgs/agent-roster-collective/roles/content-ops-lead/AGENT.md +19 -0
  62. package/orgs/agent-roster-collective/roles/contract-review-clause-reader/AGENT.md +19 -0
  63. package/orgs/agent-roster-collective/roles/contract-review-lead/AGENT.md +19 -0
  64. package/orgs/agent-roster-collective/roles/contract-review-risk-note/AGENT.md +19 -0
  65. package/orgs/agent-roster-collective/roles/data-quality-lead/AGENT.md +19 -0
  66. package/orgs/agent-roster-collective/roles/data-quality-profiler/AGENT.md +19 -0
  67. package/orgs/agent-roster-collective/roles/data-quality-rule-author/AGENT.md +19 -0
  68. package/orgs/agent-roster-collective/roles/db-migration-lead/AGENT.md +19 -0
  69. package/orgs/agent-roster-collective/roles/db-migration-migrator/AGENT.md +19 -0
  70. package/orgs/agent-roster-collective/roles/db-migration-verifier/AGENT.md +19 -0
  71. package/orgs/agent-roster-collective/roles/docs-writer-example-runner/AGENT.md +19 -0
  72. package/orgs/agent-roster-collective/roles/docs-writer-lead/AGENT.md +19 -0
  73. package/orgs/agent-roster-collective/roles/docs-writer-writer/AGENT.md +19 -0
  74. package/orgs/agent-roster-collective/roles/finance-recon-exception/AGENT.md +19 -0
  75. package/orgs/agent-roster-collective/roles/finance-recon-lead/AGENT.md +19 -0
  76. package/orgs/agent-roster-collective/roles/finance-recon-matcher/AGENT.md +19 -0
  77. package/orgs/agent-roster-collective/roles/frontend-ui-a11y-reviewer/AGENT.md +19 -0
  78. package/orgs/agent-roster-collective/roles/frontend-ui-implementer/AGENT.md +19 -0
  79. package/orgs/agent-roster-collective/roles/frontend-ui-lead/AGENT.md +19 -0
  80. package/orgs/agent-roster-collective/roles/i18n-l10n-lead/AGENT.md +19 -0
  81. package/orgs/agent-roster-collective/roles/i18n-l10n-reviewer/AGENT.md +19 -0
  82. package/orgs/agent-roster-collective/roles/i18n-l10n-translator/AGENT.md +19 -0
  83. package/orgs/agent-roster-collective/roles/incident-response-commander/AGENT.md +19 -0
  84. package/orgs/agent-roster-collective/roles/incident-response-scribe/AGENT.md +19 -0
  85. package/orgs/agent-roster-collective/roles/incident-response-triage/AGENT.md +19 -0
  86. package/orgs/agent-roster-collective/roles/literature-review-critic/AGENT.md +19 -0
  87. package/orgs/agent-roster-collective/roles/literature-review-extractor/AGENT.md +19 -0
  88. package/orgs/agent-roster-collective/roles/literature-review-lead/AGENT.md +19 -0
  89. package/orgs/agent-roster-collective/roles/market-research-lead/AGENT.md +19 -0
  90. package/orgs/agent-roster-collective/roles/market-research-researcher/AGENT.md +19 -0
  91. package/orgs/agent-roster-collective/roles/market-research-synthesizer/AGENT.md +19 -0
  92. package/orgs/agent-roster-collective/roles/ml-eval-dataset/AGENT.md +19 -0
  93. package/orgs/agent-roster-collective/roles/ml-eval-lead/AGENT.md +19 -0
  94. package/orgs/agent-roster-collective/roles/ml-eval-metric/AGENT.md +19 -0
  95. package/orgs/agent-roster-collective/roles/performance-lead/AGENT.md +19 -0
  96. package/orgs/agent-roster-collective/roles/performance-load-tester/AGENT.md +19 -0
  97. package/orgs/agent-roster-collective/roles/performance-profiler/AGENT.md +19 -0
  98. package/orgs/agent-roster-collective/roles/product-discovery-interviewer/AGENT.md +19 -0
  99. package/orgs/agent-roster-collective/roles/product-discovery-lead/AGENT.md +19 -0
  100. package/orgs/agent-roster-collective/roles/product-discovery-skeptic/AGENT.md +19 -0
  101. package/orgs/agent-roster-collective/roles/qa-regression-case-writer/AGENT.md +19 -0
  102. package/orgs/agent-roster-collective/roles/qa-regression-flake-hunter/AGENT.md +19 -0
  103. package/orgs/agent-roster-collective/roles/qa-regression-lead/AGENT.md +19 -0
  104. package/orgs/agent-roster-collective/roles/recruiting-lead/AGENT.md +19 -0
  105. package/orgs/agent-roster-collective/roles/recruiting-scheduler/AGENT.md +19 -0
  106. package/orgs/agent-roster-collective/roles/recruiting-screener/AGENT.md +19 -0
  107. package/orgs/agent-roster-collective/roles/release-manager-changelog/AGENT.md +19 -0
  108. package/orgs/agent-roster-collective/roles/release-manager-lead/AGENT.md +19 -0
  109. package/orgs/agent-roster-collective/roles/release-manager-rollback/AGENT.md +19 -0
  110. package/orgs/agent-roster-collective/roles/security-audit-code-auditor/AGENT.md +19 -0
  111. package/orgs/agent-roster-collective/roles/security-audit-lead/AGENT.md +19 -0
  112. package/orgs/agent-roster-collective/roles/security-audit-threat-modeler/AGENT.md +19 -0
  113. package/orgs/agent-roster-collective/roles/sre-oncall-capacity/AGENT.md +19 -0
  114. package/orgs/agent-roster-collective/roles/sre-oncall-lead/AGENT.md +19 -0
  115. package/orgs/agent-roster-collective/roles/sre-oncall-runbook/AGENT.md +19 -0
  116. package/orgs/agent-roster-collective/roles/support-triage-classifier/AGENT.md +19 -0
  117. package/orgs/agent-roster-collective/roles/support-triage-lead/AGENT.md +19 -0
  118. package/orgs/agent-roster-collective/roles/support-triage-responder/AGENT.md +19 -0
  119. package/orgs/agent-roster-collective/rosters/api-design/roster.yaml +26 -0
  120. package/orgs/agent-roster-collective/rosters/content-ops/roster.yaml +25 -0
  121. package/orgs/agent-roster-collective/rosters/contract-review/roster.yaml +25 -0
  122. package/orgs/agent-roster-collective/rosters/data-quality/roster.yaml +26 -0
  123. package/orgs/agent-roster-collective/rosters/db-migration/roster.yaml +26 -0
  124. package/orgs/agent-roster-collective/rosters/docs-writer/roster.yaml +25 -0
  125. package/orgs/agent-roster-collective/rosters/finance-recon/roster.yaml +25 -0
  126. package/orgs/agent-roster-collective/rosters/frontend-ui/roster.yaml +26 -0
  127. package/orgs/agent-roster-collective/rosters/i18n-l10n/roster.yaml +26 -0
  128. package/orgs/agent-roster-collective/rosters/incident-response/roster.yaml +26 -0
  129. package/orgs/agent-roster-collective/rosters/literature-review/roster.yaml +25 -0
  130. package/orgs/agent-roster-collective/rosters/market-research/roster.yaml +25 -0
  131. package/orgs/agent-roster-collective/rosters/ml-eval/roster.yaml +25 -0
  132. package/orgs/agent-roster-collective/rosters/performance/roster.yaml +25 -0
  133. package/orgs/agent-roster-collective/rosters/product-discovery/roster.yaml +25 -0
  134. package/orgs/agent-roster-collective/rosters/qa-regression/roster.yaml +26 -0
  135. package/orgs/agent-roster-collective/rosters/recruiting/roster.yaml +25 -0
  136. package/orgs/agent-roster-collective/rosters/release-manager/roster.yaml +25 -0
  137. package/orgs/agent-roster-collective/rosters/security-audit/roster.yaml +30 -0
  138. package/orgs/agent-roster-collective/rosters/sre-oncall/roster.yaml +26 -0
  139. package/orgs/agent-roster-collective/rosters/support-triage/roster.yaml +25 -0
  140. package/package.json +3 -1
  141. package/schema/compiled.v1.schema.json +391 -0
  142. package/schema/role.v1.schema.json +240 -0
  143. package/schema/roster.v2.schema.json +437 -0
  144. package/examples/core-review/roster.yaml +0 -82
  145. package/examples/research/roster.yaml +0 -42
  146. package/orgs/agent-roster-collective/api-design/roster.yaml +0 -67
  147. package/orgs/agent-roster-collective/content-ops/roster.yaml +0 -55
  148. package/orgs/agent-roster-collective/contract-review/roster.yaml +0 -58
  149. package/orgs/agent-roster-collective/data-quality/roster.yaml +0 -64
  150. package/orgs/agent-roster-collective/db-migration/roster.yaml +0 -64
  151. package/orgs/agent-roster-collective/docs-writer/roster.yaml +0 -59
  152. package/orgs/agent-roster-collective/finance-recon/roster.yaml +0 -63
  153. package/orgs/agent-roster-collective/frontend-ui/roster.yaml +0 -60
  154. package/orgs/agent-roster-collective/i18n-l10n/roster.yaml +0 -60
  155. package/orgs/agent-roster-collective/incident-response/roster.yaml +0 -65
  156. package/orgs/agent-roster-collective/literature-review/roster.yaml +0 -61
  157. package/orgs/agent-roster-collective/market-research/roster.yaml +0 -60
  158. package/orgs/agent-roster-collective/ml-eval/roster.yaml +0 -63
  159. package/orgs/agent-roster-collective/performance/roster.yaml +0 -63
  160. package/orgs/agent-roster-collective/product-discovery/roster.yaml +0 -55
  161. package/orgs/agent-roster-collective/qa-regression/roster.yaml +0 -64
  162. package/orgs/agent-roster-collective/recruiting/roster.yaml +0 -58
  163. package/orgs/agent-roster-collective/release-manager/roster.yaml +0 -59
  164. package/orgs/agent-roster-collective/security-audit/roster.yaml +0 -65
  165. package/orgs/agent-roster-collective/sre-oncall/roster.yaml +0 -60
  166. package/orgs/agent-roster-collective/support-triage/roster.yaml +0 -58
  167. /package/orgs/agent-roster-collective/{security-audit → rosters/security-audit}/capabilities.yaml +0 -0
@@ -0,0 +1,130 @@
1
+ {
2
+ "kind": "dsh-agent-roster/compiled@1",
3
+ "source": {
4
+ "roster": "data-quality",
5
+ "version": "1.0.0",
6
+ "title": "数据质量组",
7
+ "repo": "dsh-agent-roster/dsh-agent-roster",
8
+ "ref": "main",
9
+ "lock": null,
10
+ "file": "roster.yaml"
11
+ },
12
+ "targets": [
13
+ "agent-teams/members"
14
+ ],
15
+ "captain": null,
16
+ "members": [
17
+ {
18
+ "name": "lead",
19
+ "role": "数据负责人",
20
+ "roleRef": "data-quality-lead@1.0.0",
21
+ "roleName": "data-quality-lead",
22
+ "roleVersion": "1.0.0",
23
+ "provider": "deepseek",
24
+ "model": "deepseek-v4.1-flash",
25
+ "reasoningEffort": "high",
26
+ "toolPolicy": null,
27
+ "executionPrompt": "你负责这次质量评审:先确认这份数据服务谁、被哪些下游消费,再决定必须被约束的字段与红线。\n不写具体 SQL,也不替下游做取舍;口径冲突时列出两种口径的后果,让人选。\n产出是“字段 · 判据 · 阈值 · 违反后果”四列表,按影响面排序。\n口径不确定时标注“待与下游确认”,不要自定阈值。",
28
+ "promptStats": {
29
+ "chars": 143,
30
+ "parts": [
31
+ {
32
+ "path": "roles/data-quality-lead/AGENT.md",
33
+ "kind": "body+parts"
34
+ },
35
+ {
36
+ "path": "body",
37
+ "kind": "part"
38
+ }
39
+ ],
40
+ "sha256": "acfc925e477b2fb794e1d2c16c22d9457aa645d207bf65af36aa133bd83b7d99"
41
+ },
42
+ "provenance": {
43
+ "role": "data-quality-lead@1.0.0",
44
+ "sha256": "4890a002"
45
+ }
46
+ },
47
+ {
48
+ "name": "profiler",
49
+ "role": "画像",
50
+ "roleRef": "data-quality-profiler@1.0.0",
51
+ "roleName": "data-quality-profiler",
52
+ "roleVersion": "1.0.0",
53
+ "provider": "deepseek",
54
+ "model": "deepseek-v4.1-flash",
55
+ "reasoningEffort": "high",
56
+ "toolPolicy": null,
57
+ "executionPrompt": "你先描述数据本身:行数、时间范围、空值与异常值比例、主键重复、日期断档。\n不下“合格/不合格”的结论,那是负责人的事;也不提修改方案。\n每个读数给出取数口径(表、时间窗、过滤条件),便于别人复算。\n读不出来就写“读不到”,并说明是权限、表缺失还是口径不明。",
58
+ "promptStats": {
59
+ "chars": 128,
60
+ "parts": [
61
+ {
62
+ "path": "roles/data-quality-profiler/AGENT.md",
63
+ "kind": "body+parts"
64
+ },
65
+ {
66
+ "path": "body",
67
+ "kind": "part"
68
+ }
69
+ ],
70
+ "sha256": "8bc617a8e73a9f70f2c8589d86b3053549b06adcab9aea766f8042dcf4c38ae1"
71
+ },
72
+ "provenance": {
73
+ "role": "data-quality-profiler@1.0.0",
74
+ "sha256": "444af332"
75
+ }
76
+ },
77
+ {
78
+ "name": "rule-author",
79
+ "role": "判据编写",
80
+ "roleRef": "data-quality-rule-author@1.0.0",
81
+ "roleName": "data-quality-rule-author",
82
+ "roleVersion": "1.0.0",
83
+ "provider": "deepseek",
84
+ "model": "deepseek-v4.1-flash",
85
+ "reasoningEffort": "high",
86
+ "toolPolicy": null,
87
+ "executionPrompt": "你把口径写成可执行判据:每条检查给定输入、期望、失败时的输出。\n不评估业务影响;只保证判据本身是确定的、可复现的。\n对每条判据给一个“故意造坏数据”的反向用例,证明它真的会红。\n写不出反向用例的判据视为无效,明确删除而不是保留。",
88
+ "promptStats": {
89
+ "chars": 114,
90
+ "parts": [
91
+ {
92
+ "path": "roles/data-quality-rule-author/AGENT.md",
93
+ "kind": "body+parts"
94
+ },
95
+ {
96
+ "path": "body",
97
+ "kind": "part"
98
+ }
99
+ ],
100
+ "sha256": "f26078e825bf6f06afd457ddb87176827b35d6ebd42a333095c2b65d7b68f3a1"
101
+ },
102
+ "provenance": {
103
+ "role": "data-quality-rule-author@1.0.0",
104
+ "sha256": "d18d462d"
105
+ }
106
+ }
107
+ ],
108
+ "orchestration": null,
109
+ "declarations": [
110
+ {
111
+ "scope": "roster",
112
+ "field": "defaults.route",
113
+ "note": "materialized:已展开成每个成员的显式值"
114
+ },
115
+ {
116
+ "scope": "roster",
117
+ "field": "defaults.route",
118
+ "note": "materialized:已展开成每个成员的显式值"
119
+ },
120
+ {
121
+ "scope": "roster",
122
+ "field": "defaults.route",
123
+ "note": "materialized:已展开成每个成员的显式值"
124
+ }
125
+ ],
126
+ "requires": {
127
+ "skills": [],
128
+ "toolPolicies": []
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "kind": "dsh-agent-roster/compiled@1",
3
+ "source": {
4
+ "roster": "db-migration",
5
+ "version": "1.0.0",
6
+ "title": "数据库迁移组",
7
+ "repo": "dsh-agent-roster/dsh-agent-roster",
8
+ "ref": "main",
9
+ "lock": null,
10
+ "file": "roster.yaml"
11
+ },
12
+ "targets": [
13
+ "agent-teams/members"
14
+ ],
15
+ "captain": null,
16
+ "members": [
17
+ {
18
+ "name": "lead",
19
+ "role": "迁移负责人",
20
+ "roleRef": "db-migration-lead@1.0.0",
21
+ "roleName": "db-migration-lead",
22
+ "roleVersion": "1.0.0",
23
+ "provider": "deepseek",
24
+ "model": "deepseek-v4.1-flash",
25
+ "reasoningEffort": "high",
26
+ "toolPolicy": null,
27
+ "executionPrompt": "你负责这次迁移:确认影响哪些表与写入方、锁表多久、回滚脚本是否真的跑过。\n不写 DDL,也不改业务代码;你在每个门禁上做 go/no-go。\n产出是迁移计划:步骤、每步验证、回滚动作、谁在什么信号下叫停。\n任何一步没有回滚方案,直接判不可执行,不要用“应该没事”放行。",
28
+ "promptStats": {
29
+ "chars": 134,
30
+ "parts": [
31
+ {
32
+ "path": "roles/db-migration-lead/AGENT.md",
33
+ "kind": "body+parts"
34
+ },
35
+ {
36
+ "path": "body",
37
+ "kind": "part"
38
+ }
39
+ ],
40
+ "sha256": "a8d7998126350ffc002c3434268f6730b06a1128b7c65736b1cc6fe9921e3f68"
41
+ },
42
+ "provenance": {
43
+ "role": "db-migration-lead@1.0.0",
44
+ "sha256": "b6a41240"
45
+ }
46
+ },
47
+ {
48
+ "name": "migrator",
49
+ "role": "迁移实现",
50
+ "roleRef": "db-migration-migrator@1.0.0",
51
+ "roleName": "db-migration-migrator",
52
+ "roleVersion": "1.0.0",
53
+ "provider": "deepseek",
54
+ "model": "deepseek-v4.1-flash",
55
+ "reasoningEffort": "high",
56
+ "toolPolicy": null,
57
+ "executionPrompt": "你写迁移与回填脚本:可重入、可分批、每批有进度与幂等保证。\n不做业务决策,也不在脚本里夹带数据修正;发现脏数据只报告不动手。\n交付脚本 + 每步的前置断言 + 中断后如何续跑的一句话说明。\n遇到无法幂等的步骤,停下来要求改方案,不要靠“跑一次就好”。",
58
+ "promptStats": {
59
+ "chars": 125,
60
+ "parts": [
61
+ {
62
+ "path": "roles/db-migration-migrator/AGENT.md",
63
+ "kind": "body+parts"
64
+ },
65
+ {
66
+ "path": "body",
67
+ "kind": "part"
68
+ }
69
+ ],
70
+ "sha256": "aba4df7fc8f749869e9e42615cb7259611248948f2597a0181a7f17c460a0e33"
71
+ },
72
+ "provenance": {
73
+ "role": "db-migration-migrator@1.0.0",
74
+ "sha256": "eff89321"
75
+ }
76
+ },
77
+ {
78
+ "name": "verifier",
79
+ "role": "数据验证",
80
+ "roleRef": "db-migration-verifier@1.0.0",
81
+ "roleName": "db-migration-verifier",
82
+ "roleVersion": "1.0.0",
83
+ "provider": "deepseek",
84
+ "model": "deepseek-v4.1-flash",
85
+ "reasoningEffort": "high",
86
+ "toolPolicy": null,
87
+ "executionPrompt": "你只做迁移前后的对账:行数、关键金额合计、枚举分布、随机抽样逐行比对。\n不改数据,也不解释差异的业务原因;你负责把差异量化到具体行。\n输出“指标 · 迁移前 · 迁移后 · 差异 · 是否在容忍内”,并给出复算命令。\n差异超出容忍时直接判失败,不要用“可能正常”掩盖。",
88
+ "promptStats": {
89
+ "chars": 134,
90
+ "parts": [
91
+ {
92
+ "path": "roles/db-migration-verifier/AGENT.md",
93
+ "kind": "body+parts"
94
+ },
95
+ {
96
+ "path": "body",
97
+ "kind": "part"
98
+ }
99
+ ],
100
+ "sha256": "ceec711ad7fa3f02ca500fd78f70614df647a3c5f790071f87c5f2301bc37cb9"
101
+ },
102
+ "provenance": {
103
+ "role": "db-migration-verifier@1.0.0",
104
+ "sha256": "a207180c"
105
+ }
106
+ }
107
+ ],
108
+ "orchestration": null,
109
+ "declarations": [
110
+ {
111
+ "scope": "roster",
112
+ "field": "defaults.route",
113
+ "note": "materialized:已展开成每个成员的显式值"
114
+ },
115
+ {
116
+ "scope": "roster",
117
+ "field": "defaults.route",
118
+ "note": "materialized:已展开成每个成员的显式值"
119
+ },
120
+ {
121
+ "scope": "roster",
122
+ "field": "defaults.route",
123
+ "note": "materialized:已展开成每个成员的显式值"
124
+ }
125
+ ],
126
+ "requires": {
127
+ "skills": [],
128
+ "toolPolicies": []
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "kind": "dsh-agent-roster/compiled@1",
3
+ "source": {
4
+ "roster": "docs-writer",
5
+ "version": "1.0.0",
6
+ "title": "文档组",
7
+ "repo": "dsh-agent-roster/dsh-agent-roster",
8
+ "ref": "main",
9
+ "lock": null,
10
+ "file": "roster.yaml"
11
+ },
12
+ "targets": [
13
+ "agent-teams/members"
14
+ ],
15
+ "captain": null,
16
+ "members": [
17
+ {
18
+ "name": "lead",
19
+ "role": "文档负责人",
20
+ "roleRef": "docs-writer-lead@1.0.0",
21
+ "roleName": "docs-writer-lead",
22
+ "roleVersion": "1.0.0",
23
+ "provider": "deepseek",
24
+ "model": "deepseek-v4.1-flash",
25
+ "reasoningEffort": "high",
26
+ "toolPolicy": null,
27
+ "executionPrompt": "你先确认读者与目标动作,再决定文档结构:每节对应一个可完成的动作。\n不逐字润色;你负责范围、顺序与“哪些内容必须给真源链接”。\n产出是目录 + 每节的验收(读者读完后能做成什么)。\n范围不清就缩小到一条最短可用路径,其余标“待补”。",
28
+ "promptStats": {
29
+ "chars": 116,
30
+ "parts": [
31
+ {
32
+ "path": "roles/docs-writer-lead/AGENT.md",
33
+ "kind": "body+parts"
34
+ },
35
+ {
36
+ "path": "body",
37
+ "kind": "part"
38
+ }
39
+ ],
40
+ "sha256": "069e66d4a1dac264340375eb7475b2558e57a0189365131a7196ac817d62ab71"
41
+ },
42
+ "provenance": {
43
+ "role": "docs-writer-lead@1.0.0",
44
+ "sha256": "134a0463"
45
+ }
46
+ },
47
+ {
48
+ "name": "writer",
49
+ "role": "正文撰写",
50
+ "roleRef": "docs-writer-writer@1.0.0",
51
+ "roleName": "docs-writer-writer",
52
+ "roleVersion": "1.0.0",
53
+ "provider": "deepseek",
54
+ "model": "deepseek-v4.1-flash",
55
+ "reasoningEffort": "high",
56
+ "toolPolicy": null,
57
+ "executionPrompt": "你写可执行正文:每条命令带完整参数、预期输出与失败时的排查方向。\n不解释内部实现;读者只需要做成事。\n交付前逐条自问“没背景的人照这个能不能做完”,不能就补步骤。\n任何读数都标时间与来源,避免文档比现实乐观。",
58
+ "promptStats": {
59
+ "chars": 104,
60
+ "parts": [
61
+ {
62
+ "path": "roles/docs-writer-writer/AGENT.md",
63
+ "kind": "body+parts"
64
+ },
65
+ {
66
+ "path": "body",
67
+ "kind": "part"
68
+ }
69
+ ],
70
+ "sha256": "9edc8e398a00079f7f71a1048c206e0d4559d668d49c544b22506f4a91decc5a"
71
+ },
72
+ "provenance": {
73
+ "role": "docs-writer-writer@1.0.0",
74
+ "sha256": "d940c6d6"
75
+ }
76
+ },
77
+ {
78
+ "name": "example-runner",
79
+ "role": "示例验证",
80
+ "roleRef": "docs-writer-example-runner@1.0.0",
81
+ "roleName": "docs-writer-example-runner",
82
+ "roleVersion": "1.0.0",
83
+ "provider": "deepseek",
84
+ "model": "deepseek-v4.1-flash",
85
+ "reasoningEffort": "high",
86
+ "toolPolicy": null,
87
+ "executionPrompt": "你在干净环境里逐条照抄命令,记录实际输出、耗时与偏差。\n不修文档也不改命令;只报“写的 vs 实际”。\n输出偏差表:位置 · 文档写的 · 实际发生的 · 是否阻塞读者。\n无法复现的环境差异要标注,不要用“我这里可以”带过。",
88
+ "promptStats": {
89
+ "chars": 112,
90
+ "parts": [
91
+ {
92
+ "path": "roles/docs-writer-example-runner/AGENT.md",
93
+ "kind": "body+parts"
94
+ },
95
+ {
96
+ "path": "body",
97
+ "kind": "part"
98
+ }
99
+ ],
100
+ "sha256": "6e7fd0103bbbf9a246ade45ea8fe3500846ea11112f9ddfd7924947335870c1e"
101
+ },
102
+ "provenance": {
103
+ "role": "docs-writer-example-runner@1.0.0",
104
+ "sha256": "a8ba8fae"
105
+ }
106
+ }
107
+ ],
108
+ "orchestration": null,
109
+ "declarations": [
110
+ {
111
+ "scope": "roster",
112
+ "field": "defaults.route",
113
+ "note": "materialized:已展开成每个成员的显式值"
114
+ },
115
+ {
116
+ "scope": "roster",
117
+ "field": "defaults.route",
118
+ "note": "materialized:已展开成每个成员的显式值"
119
+ },
120
+ {
121
+ "scope": "roster",
122
+ "field": "defaults.route",
123
+ "note": "materialized:已展开成每个成员的显式值"
124
+ }
125
+ ],
126
+ "requires": {
127
+ "skills": [],
128
+ "toolPolicies": []
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "kind": "dsh-agent-roster/compiled@1",
3
+ "source": {
4
+ "roster": "finance-recon",
5
+ "version": "1.0.0",
6
+ "title": "财务对账组",
7
+ "repo": "dsh-agent-roster/dsh-agent-roster",
8
+ "ref": "main",
9
+ "lock": null,
10
+ "file": "roster.yaml"
11
+ },
12
+ "targets": [
13
+ "agent-teams/members"
14
+ ],
15
+ "captain": null,
16
+ "members": [
17
+ {
18
+ "name": "lead",
19
+ "role": "对账负责人",
20
+ "roleRef": "finance-recon-lead@1.0.0",
21
+ "roleName": "finance-recon-lead",
22
+ "roleVersion": "1.0.0",
23
+ "provider": "deepseek",
24
+ "model": "deepseek-v4.1-flash",
25
+ "reasoningEffort": "high",
26
+ "toolPolicy": null,
27
+ "executionPrompt": "你先统一口径:时间窗、币种、含税与否、退款怎么记,再定容忍度。\n不逐笔匹配;你负责让两侧数字可比。\n产出是口径说明 + 容忍度 + 差异上报格式。\n口径对不齐时先停下,不要用总额凑平。",
28
+ "promptStats": {
29
+ "chars": 92,
30
+ "parts": [
31
+ {
32
+ "path": "roles/finance-recon-lead/AGENT.md",
33
+ "kind": "body+parts"
34
+ },
35
+ {
36
+ "path": "body",
37
+ "kind": "part"
38
+ }
39
+ ],
40
+ "sha256": "f946350cb446f77d786f4f855aaa1bd571ca5fb12e851003ac52fdcc6c41738d"
41
+ },
42
+ "provenance": {
43
+ "role": "finance-recon-lead@1.0.0",
44
+ "sha256": "c2c0d32e"
45
+ }
46
+ },
47
+ {
48
+ "name": "matcher",
49
+ "role": "逐笔匹配",
50
+ "roleRef": "finance-recon-matcher@1.0.0",
51
+ "roleName": "finance-recon-matcher",
52
+ "roleVersion": "1.0.0",
53
+ "provider": "deepseek",
54
+ "model": "deepseek-v4.1-flash",
55
+ "reasoningEffort": "high",
56
+ "toolPolicy": null,
57
+ "executionPrompt": "你按金额、时间窗、单号匹配两侧记录,能对上的标注匹配依据。\n不解释差异原因;你只负责把未匹配项列干净。\n输出“已匹配 N 笔 · 左侧未匹配 · 右侧未匹配”,每条带金额与日期。\n模糊匹配拿不准时标“疑似”,不要强行配对。",
58
+ "promptStats": {
59
+ "chars": 111,
60
+ "parts": [
61
+ {
62
+ "path": "roles/finance-recon-matcher/AGENT.md",
63
+ "kind": "body+parts"
64
+ },
65
+ {
66
+ "path": "body",
67
+ "kind": "part"
68
+ }
69
+ ],
70
+ "sha256": "c513b7a125a16d4974e76f7cd1cce0ab886446d9314497c2ce7fc78e2ea14e07"
71
+ },
72
+ "provenance": {
73
+ "role": "finance-recon-matcher@1.0.0",
74
+ "sha256": "f0491bab"
75
+ }
76
+ },
77
+ {
78
+ "name": "exception",
79
+ "role": "差异归因",
80
+ "roleRef": "finance-recon-exception@1.0.0",
81
+ "roleName": "finance-recon-exception",
82
+ "roleVersion": "1.0.0",
83
+ "provider": "deepseek",
84
+ "model": "deepseek-v4.1-flash",
85
+ "reasoningEffort": "high",
86
+ "toolPolicy": null,
87
+ "executionPrompt": "你给未匹配项归因:时间差、手续费、退款、重复记账、错单,每条附验证方法。\n不修改任何一侧数据;只产出归因与建议动作。\n输出“差异笔 · 金额 · 归因 · 证据 · 建议(调账/查单/忽略)”。\n归因不成立时保留“未知”,不要为了结案编原因。",
88
+ "promptStats": {
89
+ "chars": 121,
90
+ "parts": [
91
+ {
92
+ "path": "roles/finance-recon-exception/AGENT.md",
93
+ "kind": "body+parts"
94
+ },
95
+ {
96
+ "path": "body",
97
+ "kind": "part"
98
+ }
99
+ ],
100
+ "sha256": "6043a3c117b1c6d8ba449ab3d6cf747d479486f2765ebcccb4fd23a38563a13d"
101
+ },
102
+ "provenance": {
103
+ "role": "finance-recon-exception@1.0.0",
104
+ "sha256": "a67c8b7d"
105
+ }
106
+ }
107
+ ],
108
+ "orchestration": null,
109
+ "declarations": [
110
+ {
111
+ "scope": "roster",
112
+ "field": "defaults.route",
113
+ "note": "materialized:已展开成每个成员的显式值"
114
+ },
115
+ {
116
+ "scope": "roster",
117
+ "field": "defaults.route",
118
+ "note": "materialized:已展开成每个成员的显式值"
119
+ },
120
+ {
121
+ "scope": "roster",
122
+ "field": "defaults.route",
123
+ "note": "materialized:已展开成每个成员的显式值"
124
+ }
125
+ ],
126
+ "requires": {
127
+ "skills": [],
128
+ "toolPolicies": []
129
+ }
130
+ }
@@ -0,0 +1,130 @@
1
+ {
2
+ "kind": "dsh-agent-roster/compiled@1",
3
+ "source": {
4
+ "roster": "frontend-ui",
5
+ "version": "1.0.0",
6
+ "title": "前端实现组",
7
+ "repo": "dsh-agent-roster/dsh-agent-roster",
8
+ "ref": "main",
9
+ "lock": null,
10
+ "file": "roster.yaml"
11
+ },
12
+ "targets": [
13
+ "agent-teams/members"
14
+ ],
15
+ "captain": null,
16
+ "members": [
17
+ {
18
+ "name": "lead",
19
+ "role": "前端负责人",
20
+ "roleRef": "frontend-ui-lead@1.0.0",
21
+ "roleName": "frontend-ui-lead",
22
+ "roleVersion": "1.0.0",
23
+ "provider": "deepseek",
24
+ "model": "deepseek-v4.1-flash",
25
+ "reasoningEffort": "high",
26
+ "toolPolicy": null,
27
+ "executionPrompt": "你先定组件边界与状态归属:哪些状态属于 URL、哪些属于组件、哪些必须提升。\n不写具体样式,也不做视觉裁决;你负责让实现有明确验收线。\n产出:组件树、状态表、每条验收怎么验(含键盘与窄屏)。\n设计缺状态(加载/空/错误)时先要求补齐,不要自己发明。",
28
+ "promptStats": {
29
+ "chars": 124,
30
+ "parts": [
31
+ {
32
+ "path": "roles/frontend-ui-lead/AGENT.md",
33
+ "kind": "body+parts"
34
+ },
35
+ {
36
+ "path": "body",
37
+ "kind": "part"
38
+ }
39
+ ],
40
+ "sha256": "371b14302af1b8356f319fa8c6a3e68d31d2879d3f26fddbf224ada5f5462bb9"
41
+ },
42
+ "provenance": {
43
+ "role": "frontend-ui-lead@1.0.0",
44
+ "sha256": "97e25be0"
45
+ }
46
+ },
47
+ {
48
+ "name": "implementer",
49
+ "role": "实现",
50
+ "roleRef": "frontend-ui-implementer@1.0.0",
51
+ "roleName": "frontend-ui-implementer",
52
+ "roleVersion": "1.0.0",
53
+ "provider": "deepseek",
54
+ "model": "deepseek-v4.1-flash",
55
+ "reasoningEffort": "high",
56
+ "toolPolicy": null,
57
+ "executionPrompt": "你按约定实现组件:状态齐全(加载/空/错误/成功)、样式只用宿主主题令牌。\n不发明交互,也不改设计稿;发现设计缺失时停下来说明缺哪一态。\n交付代码 + 一段“这个组件依赖哪些外部约定”的说明。\n必须用硬编码颜色或尺寸才能实现时,先报告再动手。",
58
+ "promptStats": {
59
+ "chars": 121,
60
+ "parts": [
61
+ {
62
+ "path": "roles/frontend-ui-implementer/AGENT.md",
63
+ "kind": "body+parts"
64
+ },
65
+ {
66
+ "path": "body",
67
+ "kind": "part"
68
+ }
69
+ ],
70
+ "sha256": "368febfe92b671b894a49806345f6c7f6a7b44e9e8f005f83f1699b02f90054f"
71
+ },
72
+ "provenance": {
73
+ "role": "frontend-ui-implementer@1.0.0",
74
+ "sha256": "d014143c"
75
+ }
76
+ },
77
+ {
78
+ "name": "a11y-reviewer",
79
+ "role": "可访问性审查",
80
+ "roleRef": "frontend-ui-a11y-reviewer@1.0.0",
81
+ "roleName": "frontend-ui-a11y-reviewer",
82
+ "roleVersion": "1.0.0",
83
+ "provider": "deepseek",
84
+ "model": "deepseek-v4.1-flash",
85
+ "reasoningEffort": "high",
86
+ "toolPolicy": null,
87
+ "executionPrompt": "你只用键盘和读屏器验证:焦点顺序、可见焦点环、语义角色、对比度、错误提示是否被读出。\n不做视觉审美评论;每条问题给出复现步骤与期望行为。\n输出“步骤 · 实际 · 期望 · 严重度”,严重度按“能否完成操作”判定。\n无法用自动化确认的,明确写“需人工验证”,不要假装测过。",
88
+ "promptStats": {
89
+ "chars": 136,
90
+ "parts": [
91
+ {
92
+ "path": "roles/frontend-ui-a11y-reviewer/AGENT.md",
93
+ "kind": "body+parts"
94
+ },
95
+ {
96
+ "path": "body",
97
+ "kind": "part"
98
+ }
99
+ ],
100
+ "sha256": "e68640ec5314879557d426a7b8d7130be231f7744136aa339671fef0d4fd0110"
101
+ },
102
+ "provenance": {
103
+ "role": "frontend-ui-a11y-reviewer@1.0.0",
104
+ "sha256": "03828aa6"
105
+ }
106
+ }
107
+ ],
108
+ "orchestration": null,
109
+ "declarations": [
110
+ {
111
+ "scope": "roster",
112
+ "field": "defaults.route",
113
+ "note": "materialized:已展开成每个成员的显式值"
114
+ },
115
+ {
116
+ "scope": "roster",
117
+ "field": "defaults.route",
118
+ "note": "materialized:已展开成每个成员的显式值"
119
+ },
120
+ {
121
+ "scope": "roster",
122
+ "field": "defaults.route",
123
+ "note": "materialized:已展开成每个成员的显式值"
124
+ }
125
+ ],
126
+ "requires": {
127
+ "skills": [],
128
+ "toolPolicies": []
129
+ }
130
+ }