asdm-cli 0.1.0
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.
- package/README.md +784 -0
- package/dist/index.mjs +3013 -0
- package/package.json +58 -0
- package/registry/agents/.gitkeep +0 -0
- package/registry/agents/architect.asdm.md +71 -0
- package/registry/agents/code-reviewer.asdm.md +75 -0
- package/registry/agents/data-analyst.asdm.md +69 -0
- package/registry/agents/documentation-writer.asdm.md +70 -0
- package/registry/agents/mobile-engineer.asdm.md +68 -0
- package/registry/agents/security-auditor.asdm.md +74 -0
- package/registry/agents/test-engineer.asdm.md +70 -0
- package/registry/commands/.gitkeep +0 -0
- package/registry/commands/analyze-schema.asdm.md +73 -0
- package/registry/commands/audit-deps.asdm.md +76 -0
- package/registry/commands/check-file.asdm.md +58 -0
- package/registry/commands/generate-types.asdm.md +82 -0
- package/registry/commands/scaffold-component.asdm.md +89 -0
- package/registry/commands/summarize.asdm.md +61 -0
- package/registry/latest.json +253 -0
- package/registry/policy.yaml +14 -0
- package/registry/profiles/base/.gitkeep +0 -0
- package/registry/profiles/base/profile.yaml +19 -0
- package/registry/profiles/data-analytics/.gitkeep +0 -0
- package/registry/profiles/data-analytics/profile.yaml +24 -0
- package/registry/profiles/fullstack-engineer/.gitkeep +0 -0
- package/registry/profiles/fullstack-engineer/profile.yaml +38 -0
- package/registry/profiles/mobile/ios/.gitkeep +0 -0
- package/registry/profiles/mobile/profile.yaml +24 -0
- package/registry/profiles/security/profile.yaml +24 -0
- package/registry/skills/api-design/.gitkeep +0 -0
- package/registry/skills/api-design/SKILL.asdm.md +101 -0
- package/registry/skills/code-review/SKILL.asdm.md +83 -0
- package/registry/skills/data-pipeline/SKILL.asdm.md +95 -0
- package/registry/skills/frontend-design/SKILL.asdm.md +73 -0
- package/registry/skills/mobile-patterns/SKILL.asdm.md +102 -0
- package/registry/skills/pandas/.gitkeep +0 -0
- package/registry/skills/plan-protocol/SKILL.asdm.md +66 -0
- package/registry/skills/react-best-practices/.gitkeep +0 -0
- package/registry/skills/react-native/.gitkeep +0 -0
- package/registry/skills/sql/.gitkeep +0 -0
- package/registry/skills/swift-ui/.gitkeep +0 -0
- package/registry/skills/threat-modeling/SKILL.asdm.md +87 -0
- package/registry/v0.1.0.json +253 -0
- package/registry/v1.0.0.json +153 -0
- package/schemas/.gitkeep +0 -0
- package/schemas/agent.schema.json +82 -0
- package/schemas/command.schema.json +58 -0
- package/schemas/config.schema.json +29 -0
- package/schemas/lock.schema.json +65 -0
- package/schemas/manifest.schema.json +98 -0
- package/schemas/overlay.schema.json +72 -0
- package/schemas/profile.schema.json +64 -0
- package/schemas/skill.schema.json +64 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: threat-modeling
|
|
3
|
+
type: skill
|
|
4
|
+
description: "Security threat modeling using the STRIDE framework for application and infrastructure"
|
|
5
|
+
version: 1.0.0
|
|
6
|
+
tags: [security, threat-modeling, stride, risk, architecture]
|
|
7
|
+
trigger: "When designing new features, reviewing security architecture, or assessing risk of system changes"
|
|
8
|
+
|
|
9
|
+
providers:
|
|
10
|
+
opencode:
|
|
11
|
+
location: skills/threat-modeling/
|
|
12
|
+
claude-code:
|
|
13
|
+
location: skills/threat-modeling/
|
|
14
|
+
copilot:
|
|
15
|
+
applyTo: "**/*"
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
# Threat Modeling Skill
|
|
19
|
+
|
|
20
|
+
## Purpose
|
|
21
|
+
|
|
22
|
+
Threat modeling is the practice of systematically identifying, classifying, and mitigating security risks before they are built into a system. It is most effective when applied at design time — retrofitting security is exponentially more expensive than designing it in.
|
|
23
|
+
|
|
24
|
+
## STRIDE Framework
|
|
25
|
+
|
|
26
|
+
STRIDE categorizes threats by the property of a secure system they violate:
|
|
27
|
+
|
|
28
|
+
| Threat | Violated Property | Example |
|
|
29
|
+
|--------|-----------------|---------|
|
|
30
|
+
| **S**poofing | Authentication | Attacker impersonates a legitimate user |
|
|
31
|
+
| **T**ampering | Integrity | Attacker modifies data in transit or at rest |
|
|
32
|
+
| **R**epudiation | Non-repudiation | User denies performing an action; no audit trail |
|
|
33
|
+
| **I**nformation Disclosure | Confidentiality | Sensitive data exposed in error messages or logs |
|
|
34
|
+
| **D**enial of Service | Availability | Attacker exhausts resources, making the service unavailable |
|
|
35
|
+
| **E**levation of Privilege | Authorization | User gains access beyond their permission level |
|
|
36
|
+
|
|
37
|
+
## Threat Modeling Process
|
|
38
|
+
|
|
39
|
+
### Step 1: Define Scope
|
|
40
|
+
Identify the components, data flows, and trust boundaries in scope. Draw a Data Flow Diagram (DFD):
|
|
41
|
+
- **External entities**: Actors outside the system boundary (users, third-party services)
|
|
42
|
+
- **Processes**: Code that transforms data
|
|
43
|
+
- **Data stores**: Databases, caches, files, queues
|
|
44
|
+
- **Data flows**: How data moves between entities, processes, and stores
|
|
45
|
+
- **Trust boundaries**: Lines a threat actor must cross to reach sensitive components
|
|
46
|
+
|
|
47
|
+
### Step 2: Identify Threats (STRIDE per Element)
|
|
48
|
+
For each element in the DFD, apply STRIDE systematically. Not every category applies to every element:
|
|
49
|
+
- External entities: primarily Spoofing, Repudiation
|
|
50
|
+
- Processes: all STRIDE categories
|
|
51
|
+
- Data stores: primarily Tampering, Information Disclosure, Denial of Service
|
|
52
|
+
- Data flows: primarily Tampering, Information Disclosure, Denial of Service
|
|
53
|
+
|
|
54
|
+
### Step 3: Assess Risk
|
|
55
|
+
For each identified threat, score using DREAD or CVSS v3.1:
|
|
56
|
+
- **Damage potential**: How severe is the impact?
|
|
57
|
+
- **Reproducibility**: How reliably can the attack be repeated?
|
|
58
|
+
- **Exploitability**: What skill level is required?
|
|
59
|
+
- **Affected users**: How many users are impacted?
|
|
60
|
+
- **Discoverability**: How easy is the attack to discover?
|
|
61
|
+
|
|
62
|
+
### Step 4: Define Mitigations
|
|
63
|
+
For each threat above the accepted risk threshold, define a specific technical control:
|
|
64
|
+
|
|
65
|
+
| Threat Category | Common Mitigations |
|
|
66
|
+
|----------------|-------------------|
|
|
67
|
+
| Spoofing | Strong authentication (MFA, passkeys), certificate pinning |
|
|
68
|
+
| Tampering | HMAC signatures, TLS mutual auth, database row-level security |
|
|
69
|
+
| Repudiation | Immutable audit logs, digital signatures, structured event logging |
|
|
70
|
+
| Information Disclosure | Encryption at rest and in transit, field-level masking, minimal logging |
|
|
71
|
+
| Denial of Service | Rate limiting, circuit breakers, autoscaling, WAF rules |
|
|
72
|
+
| Elevation of Privilege | Principle of least privilege, RBAC/ABAC, input validation |
|
|
73
|
+
|
|
74
|
+
### Step 5: Document and Track
|
|
75
|
+
Produce a threat model document with:
|
|
76
|
+
1. DFD diagram with trust boundaries annotated
|
|
77
|
+
2. Threat inventory: ID, STRIDE category, affected element, risk score
|
|
78
|
+
3. Mitigation plan: control, owner, target resolution date
|
|
79
|
+
4. Accepted risks: threats below threshold with explicit justification
|
|
80
|
+
|
|
81
|
+
## Rules
|
|
82
|
+
|
|
83
|
+
- Threat model BEFORE implementation — design-time fixes cost 30× less than production fixes
|
|
84
|
+
- NEVER accept a risk without explicit sign-off from a security lead
|
|
85
|
+
- Update the threat model when the architecture changes — stale models create false confidence
|
|
86
|
+
- Prioritize by exploitability × impact; theoretical low-exploitability threats are low priority
|
|
87
|
+
- Document the trust boundaries explicitly — most security failures occur at boundary crossings
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://asdm.dev/schemas/manifest.schema.json",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"policy": {
|
|
5
|
+
"locked_fields": [
|
|
6
|
+
"telemetry",
|
|
7
|
+
"install_hooks",
|
|
8
|
+
"auto_verify"
|
|
9
|
+
],
|
|
10
|
+
"telemetry": true,
|
|
11
|
+
"auto_verify": true,
|
|
12
|
+
"install_hooks": true,
|
|
13
|
+
"allowed_profiles": [
|
|
14
|
+
"base",
|
|
15
|
+
"fullstack-engineer",
|
|
16
|
+
"data-analytics",
|
|
17
|
+
"mobile",
|
|
18
|
+
"security"
|
|
19
|
+
],
|
|
20
|
+
"allowed_providers": [
|
|
21
|
+
"opencode",
|
|
22
|
+
"claude-code",
|
|
23
|
+
"copilot"
|
|
24
|
+
],
|
|
25
|
+
"min_cli_version": "0.1.0"
|
|
26
|
+
},
|
|
27
|
+
"profiles": {
|
|
28
|
+
"base": {
|
|
29
|
+
"agents": [
|
|
30
|
+
"code-reviewer",
|
|
31
|
+
"documentation-writer"
|
|
32
|
+
],
|
|
33
|
+
"skills": [
|
|
34
|
+
"plan-protocol",
|
|
35
|
+
"code-review"
|
|
36
|
+
],
|
|
37
|
+
"commands": [
|
|
38
|
+
"check-file",
|
|
39
|
+
"summarize"
|
|
40
|
+
],
|
|
41
|
+
"providers": [
|
|
42
|
+
"opencode",
|
|
43
|
+
"claude-code",
|
|
44
|
+
"copilot"
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
"data-analytics": {
|
|
48
|
+
"extends": [
|
|
49
|
+
"base"
|
|
50
|
+
],
|
|
51
|
+
"agents": [
|
|
52
|
+
"code-reviewer",
|
|
53
|
+
"data-analyst",
|
|
54
|
+
"documentation-writer"
|
|
55
|
+
],
|
|
56
|
+
"skills": [
|
|
57
|
+
"plan-protocol",
|
|
58
|
+
"code-review",
|
|
59
|
+
"data-pipeline"
|
|
60
|
+
],
|
|
61
|
+
"commands": [
|
|
62
|
+
"check-file",
|
|
63
|
+
"summarize",
|
|
64
|
+
"analyze-schema"
|
|
65
|
+
],
|
|
66
|
+
"providers": [
|
|
67
|
+
"opencode",
|
|
68
|
+
"claude-code",
|
|
69
|
+
"copilot"
|
|
70
|
+
]
|
|
71
|
+
},
|
|
72
|
+
"fullstack-engineer": {
|
|
73
|
+
"extends": [
|
|
74
|
+
"base"
|
|
75
|
+
],
|
|
76
|
+
"agents": [
|
|
77
|
+
"code-reviewer",
|
|
78
|
+
"documentation-writer",
|
|
79
|
+
"architect",
|
|
80
|
+
"test-engineer"
|
|
81
|
+
],
|
|
82
|
+
"skills": [
|
|
83
|
+
"plan-protocol",
|
|
84
|
+
"code-review",
|
|
85
|
+
"frontend-design",
|
|
86
|
+
"api-design"
|
|
87
|
+
],
|
|
88
|
+
"commands": [
|
|
89
|
+
"check-file",
|
|
90
|
+
"summarize",
|
|
91
|
+
"generate-types",
|
|
92
|
+
"scaffold-component"
|
|
93
|
+
],
|
|
94
|
+
"providers": [
|
|
95
|
+
"opencode",
|
|
96
|
+
"claude-code",
|
|
97
|
+
"copilot"
|
|
98
|
+
]
|
|
99
|
+
},
|
|
100
|
+
"mobile": {
|
|
101
|
+
"extends": [
|
|
102
|
+
"base"
|
|
103
|
+
],
|
|
104
|
+
"agents": [
|
|
105
|
+
"code-reviewer",
|
|
106
|
+
"documentation-writer",
|
|
107
|
+
"mobile-engineer"
|
|
108
|
+
],
|
|
109
|
+
"skills": [
|
|
110
|
+
"plan-protocol",
|
|
111
|
+
"code-review",
|
|
112
|
+
"mobile-patterns"
|
|
113
|
+
],
|
|
114
|
+
"commands": [
|
|
115
|
+
"check-file",
|
|
116
|
+
"summarize",
|
|
117
|
+
"scaffold-component"
|
|
118
|
+
],
|
|
119
|
+
"providers": [
|
|
120
|
+
"opencode",
|
|
121
|
+
"claude-code",
|
|
122
|
+
"copilot"
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
"security": {
|
|
126
|
+
"extends": [
|
|
127
|
+
"base"
|
|
128
|
+
],
|
|
129
|
+
"agents": [
|
|
130
|
+
"code-reviewer",
|
|
131
|
+
"security-auditor",
|
|
132
|
+
"documentation-writer"
|
|
133
|
+
],
|
|
134
|
+
"skills": [
|
|
135
|
+
"plan-protocol",
|
|
136
|
+
"code-review",
|
|
137
|
+
"threat-modeling"
|
|
138
|
+
],
|
|
139
|
+
"commands": [
|
|
140
|
+
"check-file",
|
|
141
|
+
"summarize",
|
|
142
|
+
"audit-deps"
|
|
143
|
+
],
|
|
144
|
+
"providers": [
|
|
145
|
+
"opencode",
|
|
146
|
+
"claude-code",
|
|
147
|
+
"copilot"
|
|
148
|
+
]
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"assets": {
|
|
152
|
+
"agents/architect.asdm.md": {
|
|
153
|
+
"sha256": "cac0b010fd350f9d23bfbb090327dc2e8e971be9daafa764269619224c5ca742",
|
|
154
|
+
"size": 3011,
|
|
155
|
+
"version": "1.0.0"
|
|
156
|
+
},
|
|
157
|
+
"agents/code-reviewer.asdm.md": {
|
|
158
|
+
"sha256": "682c73710a84ad8c40e3d8548f82811390ce3db32c6f136116afcde7f87fc75d",
|
|
159
|
+
"size": 2911,
|
|
160
|
+
"version": "1.0.0"
|
|
161
|
+
},
|
|
162
|
+
"agents/data-analyst.asdm.md": {
|
|
163
|
+
"sha256": "bb0ce105b9dd19eaef3be5d6b76f5ad273b4b95057d3bb2c998acbaf3dfc7589",
|
|
164
|
+
"size": 2865,
|
|
165
|
+
"version": "1.0.0"
|
|
166
|
+
},
|
|
167
|
+
"agents/documentation-writer.asdm.md": {
|
|
168
|
+
"sha256": "05f22780898bdc7dc9e842caab967241b99e02ca7d43d30b09ca8d19fc85d63a",
|
|
169
|
+
"size": 2788,
|
|
170
|
+
"version": "1.0.0"
|
|
171
|
+
},
|
|
172
|
+
"agents/mobile-engineer.asdm.md": {
|
|
173
|
+
"sha256": "ab51f952dcc8ce72cf3f48359e11c30fc7a3f5b32b534e56b04ee47cd382c3bd",
|
|
174
|
+
"size": 2903,
|
|
175
|
+
"version": "1.0.0"
|
|
176
|
+
},
|
|
177
|
+
"agents/security-auditor.asdm.md": {
|
|
178
|
+
"sha256": "8285378a7b30009a02f537d9fc882344c50444c1c1fe1b0ff35b8e49e475b2eb",
|
|
179
|
+
"size": 3167,
|
|
180
|
+
"version": "1.0.0"
|
|
181
|
+
},
|
|
182
|
+
"agents/test-engineer.asdm.md": {
|
|
183
|
+
"sha256": "e23266b82c0e3ccb96d613167c3c27d88651ff159fcb8e9b8eaf34b125681278",
|
|
184
|
+
"size": 2811,
|
|
185
|
+
"version": "1.0.0"
|
|
186
|
+
},
|
|
187
|
+
"skills/api-design/SKILL.asdm.md": {
|
|
188
|
+
"sha256": "637fc8014c22ddd8fa9122a44eb68cef70ffecfed724e8535b8d7d54091c579c",
|
|
189
|
+
"size": 3506,
|
|
190
|
+
"version": "1.0.0"
|
|
191
|
+
},
|
|
192
|
+
"skills/code-review/SKILL.asdm.md": {
|
|
193
|
+
"sha256": "de2011667b7f9e5c07cef878d43e85bb2d9fa2109c4ba64e161b6038012fab20",
|
|
194
|
+
"size": 3112,
|
|
195
|
+
"version": "1.0.0"
|
|
196
|
+
},
|
|
197
|
+
"skills/data-pipeline/SKILL.asdm.md": {
|
|
198
|
+
"sha256": "35e45153c4eafc4f1654b46865a226509634b3659365b03e19de482d10233699",
|
|
199
|
+
"size": 3686,
|
|
200
|
+
"version": "1.0.0"
|
|
201
|
+
},
|
|
202
|
+
"skills/frontend-design/SKILL.asdm.md": {
|
|
203
|
+
"sha256": "9cdddedd6f2b6caa8bafb8f8fa9864b6473c89170c4feedd05aaa9f1a30a8d3f",
|
|
204
|
+
"size": 3267,
|
|
205
|
+
"version": "1.0.0"
|
|
206
|
+
},
|
|
207
|
+
"skills/mobile-patterns/SKILL.asdm.md": {
|
|
208
|
+
"sha256": "9f336da4b1979cbdadad95012a4347f0e9830597f60e98e9084d6a0d07459acd",
|
|
209
|
+
"size": 3561,
|
|
210
|
+
"version": "1.0.0"
|
|
211
|
+
},
|
|
212
|
+
"skills/plan-protocol/SKILL.asdm.md": {
|
|
213
|
+
"sha256": "c0226a04e91caedc6dd9b51946508b9c05c29b51aa3402217c176161c0e7a16c",
|
|
214
|
+
"size": 2781,
|
|
215
|
+
"version": "1.0.0"
|
|
216
|
+
},
|
|
217
|
+
"skills/threat-modeling/SKILL.asdm.md": {
|
|
218
|
+
"sha256": "255ec1cc1773315b994bff8f09e647750210bc34f233c5ff83053fb6568f67e5",
|
|
219
|
+
"size": 4256,
|
|
220
|
+
"version": "1.0.0"
|
|
221
|
+
},
|
|
222
|
+
"commands/analyze-schema.asdm.md": {
|
|
223
|
+
"sha256": "2c855b9b02257cecc71c5a03faa05da52e215df148aa141c9258db8e0d2b6174",
|
|
224
|
+
"size": 2538,
|
|
225
|
+
"version": "1.0.0"
|
|
226
|
+
},
|
|
227
|
+
"commands/audit-deps.asdm.md": {
|
|
228
|
+
"sha256": "b5d54e07d9596b996090aae8e83476fb2d53b62301dd3feef82facd3d08f7150",
|
|
229
|
+
"size": 2781,
|
|
230
|
+
"version": "1.0.0"
|
|
231
|
+
},
|
|
232
|
+
"commands/check-file.asdm.md": {
|
|
233
|
+
"sha256": "3090793fb1eb3484626f7a4c9569df87ff486586e2e3f4046c15749003a4af73",
|
|
234
|
+
"size": 1700,
|
|
235
|
+
"version": "1.0.0"
|
|
236
|
+
},
|
|
237
|
+
"commands/generate-types.asdm.md": {
|
|
238
|
+
"sha256": "d1b1401c495410ee68aedc055700cfb11794228d8f363bdf6463b75e58bdff20",
|
|
239
|
+
"size": 2259,
|
|
240
|
+
"version": "1.0.0"
|
|
241
|
+
},
|
|
242
|
+
"commands/scaffold-component.asdm.md": {
|
|
243
|
+
"sha256": "312cf07c16a44fe334037281213aed99d8410070acbfe35e6ae0968ec8a5263f",
|
|
244
|
+
"size": 2327,
|
|
245
|
+
"version": "1.0.0"
|
|
246
|
+
},
|
|
247
|
+
"commands/summarize.asdm.md": {
|
|
248
|
+
"sha256": "0f52ab9a25f6f802aa2a9025d8a4e9a5825aa04ba94173884bb189566ad07ad0",
|
|
249
|
+
"size": 1919,
|
|
250
|
+
"version": "1.0.0"
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://asdm.dev/schemas/manifest.schema.json",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"built_at": "2026-04-01T00:00:00Z",
|
|
5
|
+
"commit_sha": "0000000000000000000000000000000000000000",
|
|
6
|
+
"policy": {
|
|
7
|
+
"locked_fields": ["telemetry", "install_hooks", "auto_verify"],
|
|
8
|
+
"telemetry": true,
|
|
9
|
+
"auto_verify": true,
|
|
10
|
+
"install_hooks": true,
|
|
11
|
+
"allowed_profiles": ["base", "fullstack-engineer", "data-analytics", "mobile", "security"],
|
|
12
|
+
"allowed_providers": ["opencode", "claude-code", "copilot"],
|
|
13
|
+
"min_cli_version": "1.0.0"
|
|
14
|
+
},
|
|
15
|
+
"profiles": {
|
|
16
|
+
"base": {
|
|
17
|
+
"extends": [],
|
|
18
|
+
"agents": ["code-reviewer", "documentation-writer"],
|
|
19
|
+
"skills": ["plan-protocol", "code-review"],
|
|
20
|
+
"commands": ["check-file", "summarize"]
|
|
21
|
+
},
|
|
22
|
+
"fullstack-engineer": {
|
|
23
|
+
"extends": ["base"],
|
|
24
|
+
"agents": ["code-reviewer", "documentation-writer", "architect", "test-engineer"],
|
|
25
|
+
"skills": ["plan-protocol", "code-review", "frontend-design", "api-design"],
|
|
26
|
+
"commands": ["check-file", "summarize", "generate-types", "scaffold-component"],
|
|
27
|
+
"providers": ["opencode", "claude-code", "copilot"]
|
|
28
|
+
},
|
|
29
|
+
"data-analytics": {
|
|
30
|
+
"extends": ["base"],
|
|
31
|
+
"agents": ["code-reviewer", "data-analyst", "documentation-writer"],
|
|
32
|
+
"skills": ["plan-protocol", "code-review", "data-pipeline"],
|
|
33
|
+
"commands": ["check-file", "summarize", "analyze-schema"],
|
|
34
|
+
"providers": ["opencode", "claude-code", "copilot"]
|
|
35
|
+
},
|
|
36
|
+
"mobile": {
|
|
37
|
+
"extends": ["base"],
|
|
38
|
+
"agents": ["code-reviewer", "documentation-writer", "mobile-engineer"],
|
|
39
|
+
"skills": ["plan-protocol", "code-review", "mobile-patterns"],
|
|
40
|
+
"commands": ["check-file", "summarize", "scaffold-component"],
|
|
41
|
+
"providers": ["opencode", "claude-code", "copilot"]
|
|
42
|
+
},
|
|
43
|
+
"security": {
|
|
44
|
+
"extends": ["base"],
|
|
45
|
+
"agents": ["code-reviewer", "security-auditor", "documentation-writer"],
|
|
46
|
+
"skills": ["plan-protocol", "code-review", "threat-modeling"],
|
|
47
|
+
"commands": ["check-file", "summarize", "audit-deps"],
|
|
48
|
+
"providers": ["opencode", "claude-code", "copilot"]
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"assets": {
|
|
52
|
+
"agents/code-reviewer.asdm.md": {
|
|
53
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
54
|
+
"size": 0,
|
|
55
|
+
"version": "1.0.0"
|
|
56
|
+
},
|
|
57
|
+
"agents/documentation-writer.asdm.md": {
|
|
58
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
59
|
+
"size": 0,
|
|
60
|
+
"version": "1.0.0"
|
|
61
|
+
},
|
|
62
|
+
"agents/architect.asdm.md": {
|
|
63
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
64
|
+
"size": 0,
|
|
65
|
+
"version": "1.0.0"
|
|
66
|
+
},
|
|
67
|
+
"agents/test-engineer.asdm.md": {
|
|
68
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
69
|
+
"size": 0,
|
|
70
|
+
"version": "1.0.0"
|
|
71
|
+
},
|
|
72
|
+
"agents/data-analyst.asdm.md": {
|
|
73
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
74
|
+
"size": 0,
|
|
75
|
+
"version": "1.0.0"
|
|
76
|
+
},
|
|
77
|
+
"agents/mobile-engineer.asdm.md": {
|
|
78
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
79
|
+
"size": 0,
|
|
80
|
+
"version": "1.0.0"
|
|
81
|
+
},
|
|
82
|
+
"agents/security-auditor.asdm.md": {
|
|
83
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
84
|
+
"size": 0,
|
|
85
|
+
"version": "1.0.0"
|
|
86
|
+
},
|
|
87
|
+
"skills/plan-protocol/SKILL.asdm.md": {
|
|
88
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
89
|
+
"size": 0,
|
|
90
|
+
"version": "1.0.0"
|
|
91
|
+
},
|
|
92
|
+
"skills/code-review/SKILL.asdm.md": {
|
|
93
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
94
|
+
"size": 0,
|
|
95
|
+
"version": "1.0.0"
|
|
96
|
+
},
|
|
97
|
+
"skills/frontend-design/SKILL.asdm.md": {
|
|
98
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
99
|
+
"size": 0,
|
|
100
|
+
"version": "1.0.0"
|
|
101
|
+
},
|
|
102
|
+
"skills/api-design/SKILL.asdm.md": {
|
|
103
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
104
|
+
"size": 0,
|
|
105
|
+
"version": "1.0.0"
|
|
106
|
+
},
|
|
107
|
+
"skills/data-pipeline/SKILL.asdm.md": {
|
|
108
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
109
|
+
"size": 0,
|
|
110
|
+
"version": "1.0.0"
|
|
111
|
+
},
|
|
112
|
+
"skills/mobile-patterns/SKILL.asdm.md": {
|
|
113
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
114
|
+
"size": 0,
|
|
115
|
+
"version": "1.0.0"
|
|
116
|
+
},
|
|
117
|
+
"skills/threat-modeling/SKILL.asdm.md": {
|
|
118
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
119
|
+
"size": 0,
|
|
120
|
+
"version": "1.0.0"
|
|
121
|
+
},
|
|
122
|
+
"commands/check-file.asdm.md": {
|
|
123
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
124
|
+
"size": 0,
|
|
125
|
+
"version": "1.0.0"
|
|
126
|
+
},
|
|
127
|
+
"commands/summarize.asdm.md": {
|
|
128
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
129
|
+
"size": 0,
|
|
130
|
+
"version": "1.0.0"
|
|
131
|
+
},
|
|
132
|
+
"commands/generate-types.asdm.md": {
|
|
133
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
134
|
+
"size": 0,
|
|
135
|
+
"version": "1.0.0"
|
|
136
|
+
},
|
|
137
|
+
"commands/scaffold-component.asdm.md": {
|
|
138
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
139
|
+
"size": 0,
|
|
140
|
+
"version": "1.0.0"
|
|
141
|
+
},
|
|
142
|
+
"commands/analyze-schema.asdm.md": {
|
|
143
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
144
|
+
"size": 0,
|
|
145
|
+
"version": "1.0.0"
|
|
146
|
+
},
|
|
147
|
+
"commands/audit-deps.asdm.md": {
|
|
148
|
+
"sha256": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
149
|
+
"size": 0,
|
|
150
|
+
"version": "1.0.0"
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
package/schemas/.gitkeep
ADDED
|
File without changes
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://asdm.dev/schemas/agent.schema.json",
|
|
4
|
+
"title": "ASDM Agent",
|
|
5
|
+
"description": "Schema for ASDM agent .asdm.md frontmatter",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "type", "description", "version"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"name": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^[a-z][a-z0-9-]*$",
|
|
13
|
+
"description": "Kebab-case agent identifier"
|
|
14
|
+
},
|
|
15
|
+
"type": {
|
|
16
|
+
"type": "string",
|
|
17
|
+
"const": "agent"
|
|
18
|
+
},
|
|
19
|
+
"description": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 10,
|
|
22
|
+
"maxLength": 200
|
|
23
|
+
},
|
|
24
|
+
"version": {
|
|
25
|
+
"type": "string",
|
|
26
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$",
|
|
27
|
+
"description": "Semantic version"
|
|
28
|
+
},
|
|
29
|
+
"tags": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"items": { "type": "string" },
|
|
32
|
+
"uniqueItems": true
|
|
33
|
+
},
|
|
34
|
+
"providers": {
|
|
35
|
+
"type": "object",
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"properties": {
|
|
38
|
+
"opencode": {
|
|
39
|
+
"type": "object",
|
|
40
|
+
"additionalProperties": true,
|
|
41
|
+
"properties": {
|
|
42
|
+
"model": { "type": "string" },
|
|
43
|
+
"permissions": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": { "type": "string" }
|
|
46
|
+
},
|
|
47
|
+
"tools": {
|
|
48
|
+
"type": "array",
|
|
49
|
+
"items": { "type": "string" }
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
"claude-code": {
|
|
54
|
+
"type": "object",
|
|
55
|
+
"additionalProperties": true,
|
|
56
|
+
"properties": {
|
|
57
|
+
"model": { "type": "string" },
|
|
58
|
+
"allowedTools": {
|
|
59
|
+
"type": "array",
|
|
60
|
+
"items": { "type": "string" }
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
"copilot": {
|
|
65
|
+
"type": "object",
|
|
66
|
+
"additionalProperties": true,
|
|
67
|
+
"properties": {
|
|
68
|
+
"on": { "type": "string" },
|
|
69
|
+
"safe-outputs": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": { "type": "string" }
|
|
72
|
+
},
|
|
73
|
+
"permissions": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"additionalProperties": { "type": "string" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://asdm.dev/schemas/command.schema.json",
|
|
4
|
+
"title": "ASDM Command",
|
|
5
|
+
"description": "Schema for ASDM command .asdm.md frontmatter",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["name", "type", "description", "version"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"name": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
13
|
+
},
|
|
14
|
+
"type": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"const": "command"
|
|
17
|
+
},
|
|
18
|
+
"description": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"minLength": 10,
|
|
21
|
+
"maxLength": 200
|
|
22
|
+
},
|
|
23
|
+
"version": {
|
|
24
|
+
"type": "string",
|
|
25
|
+
"pattern": "^\\d+\\.\\d+\\.\\d+$"
|
|
26
|
+
},
|
|
27
|
+
"providers": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"opencode": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": true,
|
|
34
|
+
"properties": {
|
|
35
|
+
"slash_command": { "type": "string" },
|
|
36
|
+
"agent": { "type": "string" }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"claude-code": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": true,
|
|
42
|
+
"properties": {
|
|
43
|
+
"slash_command": { "type": "string" },
|
|
44
|
+
"agent": { "type": "string" }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"copilot": {
|
|
48
|
+
"type": "object",
|
|
49
|
+
"additionalProperties": true,
|
|
50
|
+
"properties": {
|
|
51
|
+
"slash_command": { "type": "string" },
|
|
52
|
+
"agent": { "type": "string" }
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://asdm.dev/schemas/config.schema.json",
|
|
4
|
+
"title": "ASDM Project Config",
|
|
5
|
+
"description": "Schema for .asdm.json (committed project config)",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["registry", "profile"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"$schema": { "type": "string" },
|
|
11
|
+
"registry": {
|
|
12
|
+
"type": "string",
|
|
13
|
+
"pattern": "^github://[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+$",
|
|
14
|
+
"description": "Registry URL in github://{org}/{repo} format"
|
|
15
|
+
},
|
|
16
|
+
"profile": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"pattern": "^[a-z][a-z0-9-]*$"
|
|
19
|
+
},
|
|
20
|
+
"providers": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"items": {
|
|
23
|
+
"type": "string",
|
|
24
|
+
"enum": ["opencode", "claude-code", "copilot"]
|
|
25
|
+
},
|
|
26
|
+
"uniqueItems": true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|