-
-
Notifications
You must be signed in to change notification settings - Fork 280
Expand file tree
/
Copy pathcoupling.json
More file actions
66 lines (66 loc) · 4.38 KB
/
Copy pathcoupling.json
File metadata and controls
66 lines (66 loc) · 4.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
{
"$schema": "./coupling.schema.json",
"couplings": [
{
"id": "ai-source-touches-agent-skills",
"trigger": "packages/typescript/ai*/src/**/*.ts",
"impacts": [
{
"target": [
"packages/typescript/ai/skills/ai-core/structured-outputs/SKILL.md",
"packages/typescript/ai/skills/ai-core/chat-experience/SKILL.md",
"packages/typescript/ai/skills/ai-core/tool-calling/SKILL.md",
"packages/typescript/ai/skills/ai-core/adapter-configuration/SKILL.md",
"packages/typescript/ai/skills/ai-core/middleware/SKILL.md",
"packages/typescript/ai/skills/ai-core/media-generation/SKILL.md",
"packages/typescript/ai/skills/ai-core/ag-ui-protocol/SKILL.md",
"packages/typescript/ai/skills/ai-core/debug-logging/SKILL.md",
"packages/typescript/ai/skills/ai-core/custom-backend-integration/SKILL.md",
"packages/typescript/ai-code-mode/skills/ai-code-mode/SKILL.md"
],
"kind": "change-required",
"why": "Agent skills are a contract with downstream coding agents. When the source surface they cover changes (new public API, changed type, new pattern, removed pattern, deprecation), the skill must be updated in the same PR — otherwise agents reading the skill keep generating obsolete or wrong code targeting a surface that no longer exists. Use this list to decide which skill(s) cover the file you're touching: `activities/chat/**` → chat-experience / structured-outputs / tool-calling; `activities/generateImage|generateAudio|generateVideo|generateSpeech|generateTranscription|summarize/**` → media-generation; `middleware/**` → middleware; `protocol/**` → ag-ui-protocol; `adapters/**` or anything that affects the adapter contract → adapter-configuration. Skip only for pure refactors / perf / internal-only changes that don't surface a new pattern or change observable behavior."
}
]
},
{
"id": "ai-source-touches-public-docs",
"trigger": "packages/typescript/ai*/src/**/*.ts",
"impacts": [
{
"target": [
"docs/structured-outputs/**/*.md",
"docs/chat/**/*.md",
"docs/tools/**/*.md",
"docs/adapters/**/*.md",
"docs/advanced/**/*.md",
"docs/api/**/*.md",
"docs/getting-started/**/*.md",
"docs/protocol/**/*.md",
"docs/media/**/*.md",
"docs/code-mode/**/*.md",
"docs/migration/**/*.md"
],
"kind": "change-required",
"why": "Public docs are the canonical source for users. When the source surface they describe changes — new capability, behavior change, deprecation — the docs must be updated in the same PR. Cases to watch for: (1) the new behavior contradicts existing doc advice (e.g. removing a hack the doc still recommends); (2) the new capability opens a use case no existing page covers (consider whether a new page is needed, plus nav config and cross-links); (3) a public type / function gains or loses generic parameters, optional fields, etc. Run `pnpm test:docs` after editing to catch cross-link rot. Skip only for pure refactors / perf / internal-only changes."
}
]
},
{
"id": "ai-source-touches-e2e-coverage",
"trigger": "packages/typescript/ai*/src/**/*.ts",
"impacts": [
{
"target": [
"testing/e2e/tests/**/*.spec.ts",
"testing/e2e/fixtures/**",
"testing/e2e/src/lib/feature-support.ts",
"testing/e2e/src/lib/types.ts"
],
"kind": "new-code-required",
"why": "Per CLAUDE.md, every feature / bug fix / behavior change MUST include E2E test coverage. When a new public capability is added, a corresponding spec under testing/e2e/tests/ plus a fixture under testing/e2e/fixtures/ are required — often plus a new entry in feature-support.ts and types.ts. The full pattern is: add the Feature flag, decide provider support, optionally add a per-feature config (system prompt, schema, tools), wire it through src/routes/api.chat.ts (or the relevant route), write the fixture(s), write the spec iterating `providersFor(feature)`. Spec must run against every supported provider so non-native-streaming providers exercise the fallback path. Skip only for refactors that don't change observable behavior."
}
]
}
]
}