asdm-cli 0.1.0 → 0.1.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.
- package/README.md +5 -5
- package/dist/index.mjs +62 -31
- package/package.json +1 -1
- package/registry/latest.json +2 -2
- package/registry/v0.1.1.json +253 -0
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> **Write Once, Emit Many.**
|
|
4
4
|
> One source of truth for all your AI coding assistant configurations.
|
|
5
5
|
|
|
6
|
-
[](https://www.npmjs.com/package/asdm-cli)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
[](https://nodejs.org)
|
|
9
9
|
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
15
|
# 1. Install globally (or use npx for zero-install)
|
|
16
|
-
npm install -g
|
|
16
|
+
npm install -g asdm-cli
|
|
17
17
|
|
|
18
18
|
# 2. Initialize your project
|
|
19
19
|
asdm init --registry github://your-org/asdm-registry --profile fullstack-engineer
|
|
@@ -65,14 +65,14 @@ ASDM is designed for teams. The registry includes a **corporate policy** that tr
|
|
|
65
65
|
### Global install (recommended)
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
|
-
npm install -g
|
|
68
|
+
npm install -g asdm-cli
|
|
69
69
|
asdm --help
|
|
70
70
|
```
|
|
71
71
|
|
|
72
72
|
### Zero-install via npx
|
|
73
73
|
|
|
74
74
|
```bash
|
|
75
|
-
npx
|
|
75
|
+
npx asdm-cli sync
|
|
76
76
|
```
|
|
77
77
|
|
|
78
78
|
### Requirements
|
|
@@ -355,7 +355,7 @@ Created automatically by `asdm use <profile>`. Never edit this manually.
|
|
|
355
355
|
|
|
356
356
|
### `.asdm-lock.json` — Lockfile (committed to git)
|
|
357
357
|
|
|
358
|
-
Generated by `asdm sync`. Records the exact SHA-256 of every emitted file
|
|
358
|
+
Generated by `asdm sync`. Records the exact SHA-256 of every emitted file and the manifest version. Enables:
|
|
359
359
|
|
|
360
360
|
- **Offline integrity checks** — `asdm verify` works without network access
|
|
361
361
|
- **Incremental sync** — only re-download changed assets
|
package/dist/index.mjs
CHANGED
|
@@ -755,7 +755,7 @@ var TelemetryWriter = class {
|
|
|
755
755
|
const fullEvent = {
|
|
756
756
|
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
757
757
|
machineId: machineId(),
|
|
758
|
-
version: "0.1.
|
|
758
|
+
version: "0.1.1",
|
|
759
759
|
...event
|
|
760
760
|
};
|
|
761
761
|
const line = JSON.stringify(fullEvent) + "\n";
|
|
@@ -939,7 +939,7 @@ var init_default = defineCommand({
|
|
|
939
939
|
const alreadyExists = await exists(configPath);
|
|
940
940
|
if (alreadyExists && !ctx.args.force) {
|
|
941
941
|
logger.warn(".asdm.json already exists. Use --force to overwrite.");
|
|
942
|
-
|
|
942
|
+
return;
|
|
943
943
|
}
|
|
944
944
|
const profile = ctx.args.profile || "base";
|
|
945
945
|
const registry = ctx.args.registry || DEFAULT_REGISTRY;
|
|
@@ -965,7 +965,8 @@ var init_default = defineCommand({
|
|
|
965
965
|
} catch (err) {
|
|
966
966
|
const message = err instanceof Error ? err.message : String(err);
|
|
967
967
|
logger.error(message);
|
|
968
|
-
process.
|
|
968
|
+
process.exitCode = 1;
|
|
969
|
+
return;
|
|
969
970
|
}
|
|
970
971
|
}
|
|
971
972
|
});
|
|
@@ -979,6 +980,7 @@ import path11 from "path";
|
|
|
979
980
|
// src/core/registry-client.ts
|
|
980
981
|
var GITHUB_API_BASE = "https://api.github.com";
|
|
981
982
|
var GITHUB_RAW_BASE = "https://github.com";
|
|
983
|
+
var FETCH_TIMEOUT_MS = 1e4;
|
|
982
984
|
function getGithubToken() {
|
|
983
985
|
return process.env["ASDM_GITHUB_TOKEN"] ?? process.env["GITHUB_TOKEN"];
|
|
984
986
|
}
|
|
@@ -1000,8 +1002,10 @@ async function fetchWithRetry(url, options, maxRetries = 3) {
|
|
|
1000
1002
|
if (attempt > 0) {
|
|
1001
1003
|
await new Promise((resolve) => setTimeout(resolve, 1e3 * Math.pow(2, attempt - 1)));
|
|
1002
1004
|
}
|
|
1005
|
+
const controller = new AbortController();
|
|
1006
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
1003
1007
|
try {
|
|
1004
|
-
const response = await fetch(url, options);
|
|
1008
|
+
const response = await fetch(url, { ...options, signal: controller.signal });
|
|
1005
1009
|
if (response.status === 403 || response.status === 429) {
|
|
1006
1010
|
const retryAfter = response.headers.get("Retry-After");
|
|
1007
1011
|
const waitMs = retryAfter ? parseInt(retryAfter, 10) * 1e3 : 6e4;
|
|
@@ -1017,6 +1021,8 @@ async function fetchWithRetry(url, options, maxRetries = 3) {
|
|
|
1017
1021
|
`Network request failed after ${maxRetries} attempts: ${lastError.message}`,
|
|
1018
1022
|
"Check your internet connection and GitHub token"
|
|
1019
1023
|
);
|
|
1024
|
+
} finally {
|
|
1025
|
+
clearTimeout(timer);
|
|
1020
1026
|
}
|
|
1021
1027
|
}
|
|
1022
1028
|
throw new NetworkError(
|
|
@@ -1114,7 +1120,14 @@ var RegistryClient = class {
|
|
|
1114
1120
|
async ping() {
|
|
1115
1121
|
try {
|
|
1116
1122
|
const url = `${GITHUB_API_BASE}/repos/${this.org}/${this.repo}`;
|
|
1117
|
-
const
|
|
1123
|
+
const controller = new AbortController();
|
|
1124
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
1125
|
+
let response;
|
|
1126
|
+
try {
|
|
1127
|
+
response = await fetch(url, { headers: this.headers, signal: controller.signal });
|
|
1128
|
+
} finally {
|
|
1129
|
+
clearTimeout(timer);
|
|
1130
|
+
}
|
|
1118
1131
|
return response.status === 200;
|
|
1119
1132
|
} catch {
|
|
1120
1133
|
return false;
|
|
@@ -1365,7 +1378,7 @@ async function loadAdapters(providers) {
|
|
|
1365
1378
|
return adapters;
|
|
1366
1379
|
}
|
|
1367
1380
|
async function getCliVersion() {
|
|
1368
|
-
return "0.1.
|
|
1381
|
+
return "0.1.1";
|
|
1369
1382
|
}
|
|
1370
1383
|
async function sync(options) {
|
|
1371
1384
|
const startTime = Date.now();
|
|
@@ -1603,7 +1616,8 @@ var sync_default = defineCommand2({
|
|
|
1603
1616
|
const message = err instanceof Error ? err.message : String(err);
|
|
1604
1617
|
const suggestion = err.suggestion ?? void 0;
|
|
1605
1618
|
logger.error(message, suggestion);
|
|
1606
|
-
process.
|
|
1619
|
+
process.exitCode = 1;
|
|
1620
|
+
return;
|
|
1607
1621
|
}
|
|
1608
1622
|
}
|
|
1609
1623
|
});
|
|
@@ -1723,18 +1737,21 @@ var verify_default = defineCommand3({
|
|
|
1723
1737
|
logger.error(`${icon} ${v.filePath} (${v.type})`);
|
|
1724
1738
|
}
|
|
1725
1739
|
}
|
|
1726
|
-
process.
|
|
1740
|
+
process.exitCode = result.exitCode;
|
|
1741
|
+
return;
|
|
1727
1742
|
}
|
|
1728
1743
|
try {
|
|
1729
1744
|
const result = await verify(cwd, void 0, true, telemetry);
|
|
1730
1745
|
if (useJson) {
|
|
1731
1746
|
console.log(JSON.stringify(result, null, 2));
|
|
1732
|
-
process.
|
|
1747
|
+
process.exitCode = result.exitCode;
|
|
1748
|
+
return;
|
|
1733
1749
|
}
|
|
1734
1750
|
if (result.exitCode === VERIFY_EXIT_CODES.NO_LOCK) {
|
|
1735
1751
|
logger.warn("No lockfile found (.asdm-lock.json)");
|
|
1736
1752
|
logger.info("Run `asdm sync` to initialize");
|
|
1737
|
-
process.
|
|
1753
|
+
process.exitCode = VERIFY_EXIT_CODES.NO_LOCK;
|
|
1754
|
+
return;
|
|
1738
1755
|
}
|
|
1739
1756
|
logger.asdm(`Verified ${result.checkedFiles} managed file(s)`);
|
|
1740
1757
|
logger.divider();
|
|
@@ -1758,11 +1775,13 @@ var verify_default = defineCommand3({
|
|
|
1758
1775
|
logger.warn(`Manifest is outdated (local: ${result.currentManifestVersion}, latest: ${result.latestManifestVersion})`);
|
|
1759
1776
|
logger.info("Run `asdm sync` to update");
|
|
1760
1777
|
}
|
|
1761
|
-
process.
|
|
1778
|
+
process.exitCode = result.exitCode;
|
|
1779
|
+
return;
|
|
1762
1780
|
} catch (err) {
|
|
1763
1781
|
const message = err instanceof Error ? err.message : String(err);
|
|
1764
1782
|
logger.error(message);
|
|
1765
|
-
process.
|
|
1783
|
+
process.exitCode = 1;
|
|
1784
|
+
return;
|
|
1766
1785
|
}
|
|
1767
1786
|
}
|
|
1768
1787
|
});
|
|
@@ -1782,7 +1801,8 @@ var status_default = defineCommand4({
|
|
|
1782
1801
|
} catch (err) {
|
|
1783
1802
|
if (err instanceof ConfigError) {
|
|
1784
1803
|
logger.warn("Not initialized. Run `asdm init` first.");
|
|
1785
|
-
process.
|
|
1804
|
+
process.exitCode = 1;
|
|
1805
|
+
return;
|
|
1786
1806
|
}
|
|
1787
1807
|
throw err;
|
|
1788
1808
|
}
|
|
@@ -1842,14 +1862,16 @@ var use_default = defineCommand5({
|
|
|
1842
1862
|
const profile = ctx.args.profile;
|
|
1843
1863
|
if (!profile) {
|
|
1844
1864
|
logger.error("Profile name is required", "Usage: asdm use <profile>");
|
|
1845
|
-
process.
|
|
1865
|
+
process.exitCode = 1;
|
|
1866
|
+
return;
|
|
1846
1867
|
}
|
|
1847
1868
|
try {
|
|
1848
1869
|
await readProjectConfig(cwd);
|
|
1849
1870
|
} catch (err) {
|
|
1850
1871
|
if (err instanceof ConfigError) {
|
|
1851
1872
|
logger.error("No .asdm.json found", "Run `asdm init` first");
|
|
1852
|
-
process.
|
|
1873
|
+
process.exitCode = 1;
|
|
1874
|
+
return;
|
|
1853
1875
|
}
|
|
1854
1876
|
throw err;
|
|
1855
1877
|
}
|
|
@@ -1861,7 +1883,8 @@ var use_default = defineCommand5({
|
|
|
1861
1883
|
`Profile "${profile}" not found in manifest`,
|
|
1862
1884
|
`Available profiles: ${available}`
|
|
1863
1885
|
);
|
|
1864
|
-
process.
|
|
1886
|
+
process.exitCode = 1;
|
|
1887
|
+
return;
|
|
1865
1888
|
}
|
|
1866
1889
|
} else {
|
|
1867
1890
|
logger.warn("No cached manifest found \u2014 skipping profile validation");
|
|
@@ -1877,7 +1900,8 @@ var use_default = defineCommand5({
|
|
|
1877
1900
|
const message = err instanceof Error ? err.message : String(err);
|
|
1878
1901
|
const suggestion = err.suggestion ?? void 0;
|
|
1879
1902
|
logger.error(message, suggestion);
|
|
1880
|
-
process.
|
|
1903
|
+
process.exitCode = 1;
|
|
1904
|
+
return;
|
|
1881
1905
|
}
|
|
1882
1906
|
}
|
|
1883
1907
|
});
|
|
@@ -2228,7 +2252,7 @@ var version_default = defineCommand10({
|
|
|
2228
2252
|
description: "Print CLI version and environment info"
|
|
2229
2253
|
},
|
|
2230
2254
|
run(_ctx) {
|
|
2231
|
-
console.log(`asdm v${"0.1.
|
|
2255
|
+
console.log(`asdm v${"0.1.1"}`);
|
|
2232
2256
|
console.log(`node ${process.version}`);
|
|
2233
2257
|
console.log(`os ${os3.type()} ${os3.release()} (${process.platform})`);
|
|
2234
2258
|
}
|
|
@@ -2457,7 +2481,8 @@ var doctor_default = defineCommand11({
|
|
|
2457
2481
|
logger.divider();
|
|
2458
2482
|
if (anyFailed) {
|
|
2459
2483
|
logger.error("Some checks failed \u2014 review the output above");
|
|
2460
|
-
process.
|
|
2484
|
+
process.exitCode = 1;
|
|
2485
|
+
return;
|
|
2461
2486
|
} else {
|
|
2462
2487
|
logger.success("All checks passed");
|
|
2463
2488
|
}
|
|
@@ -2905,7 +2930,7 @@ init_fs();
|
|
|
2905
2930
|
import path17 from "path";
|
|
2906
2931
|
var CACHE_FILENAME = "version-check-cache.json";
|
|
2907
2932
|
var CHECK_INTERVAL_MS = 24 * 60 * 60 * 1e3;
|
|
2908
|
-
var
|
|
2933
|
+
var FETCH_TIMEOUT_MS2 = 3e3;
|
|
2909
2934
|
function isNewerVersion(current, latest) {
|
|
2910
2935
|
const parse = (v) => {
|
|
2911
2936
|
const parts = v.replace(/^v/, "").split(".");
|
|
@@ -2933,12 +2958,16 @@ async function checkForUpdate(currentVersion) {
|
|
|
2933
2958
|
}
|
|
2934
2959
|
try {
|
|
2935
2960
|
const controller = new AbortController();
|
|
2936
|
-
const timer = setTimeout(() => controller.abort(),
|
|
2937
|
-
|
|
2938
|
-
|
|
2939
|
-
|
|
2940
|
-
|
|
2941
|
-
|
|
2961
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS2);
|
|
2962
|
+
let response;
|
|
2963
|
+
try {
|
|
2964
|
+
response = await fetch("https://registry.npmjs.org/asdm-cli/latest", {
|
|
2965
|
+
signal: controller.signal,
|
|
2966
|
+
headers: { Accept: "application/json" }
|
|
2967
|
+
});
|
|
2968
|
+
} finally {
|
|
2969
|
+
clearTimeout(timer);
|
|
2970
|
+
}
|
|
2942
2971
|
if (!response.ok) return null;
|
|
2943
2972
|
const data = await response.json();
|
|
2944
2973
|
const latestVersion = data.version;
|
|
@@ -2958,7 +2987,7 @@ async function checkForUpdate(currentVersion) {
|
|
|
2958
2987
|
var rootCommand = defineCommand16({
|
|
2959
2988
|
meta: {
|
|
2960
2989
|
name: "asdm",
|
|
2961
|
-
version: "0.1.
|
|
2990
|
+
version: "0.1.1",
|
|
2962
2991
|
description: "Agentic Software Delivery Model \u2014 Write Once, Emit Many"
|
|
2963
2992
|
},
|
|
2964
2993
|
subCommands: {
|
|
@@ -2984,7 +3013,7 @@ function printUpdateBox(currentVersion, latestVersion) {
|
|
|
2984
3013
|
const BOLD2 = "\x1B[1m";
|
|
2985
3014
|
const RESET2 = "\x1B[0m";
|
|
2986
3015
|
const updateLine = ` Update available: ${currentVersion} \u2192 ${latestVersion}`;
|
|
2987
|
-
const cmdLine = ` Run: npm install -g
|
|
3016
|
+
const cmdLine = ` Run: npm install -g asdm-cli`;
|
|
2988
3017
|
const MIN_WIDTH = 45;
|
|
2989
3018
|
const innerWidth = Math.max(
|
|
2990
3019
|
Math.max(updateLine.length, cmdLine.length) + 2,
|
|
@@ -3002,12 +3031,14 @@ ${bot}${RESET2}`);
|
|
|
3002
3031
|
}
|
|
3003
3032
|
async function main() {
|
|
3004
3033
|
await runMain(rootCommand);
|
|
3034
|
+
if (process.exitCode !== void 0 && process.exitCode !== 0) return;
|
|
3005
3035
|
try {
|
|
3006
|
-
const latestVersion = await checkForUpdate("0.1.
|
|
3036
|
+
const latestVersion = await checkForUpdate("0.1.1");
|
|
3007
3037
|
if (latestVersion) {
|
|
3008
|
-
printUpdateBox("0.1.
|
|
3038
|
+
printUpdateBox("0.1.1", latestVersion);
|
|
3009
3039
|
}
|
|
3010
3040
|
} catch {
|
|
3011
3041
|
}
|
|
3012
3042
|
}
|
|
3013
|
-
main()
|
|
3043
|
+
main().catch(() => {
|
|
3044
|
+
});
|
package/package.json
CHANGED
package/registry/latest.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://asdm.dev/schemas/manifest.schema.json",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"policy": {
|
|
5
5
|
"locked_fields": [
|
|
6
6
|
"telemetry",
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"claude-code",
|
|
23
23
|
"copilot"
|
|
24
24
|
],
|
|
25
|
-
"min_cli_version": "0.1.
|
|
25
|
+
"min_cli_version": "0.1.1"
|
|
26
26
|
},
|
|
27
27
|
"profiles": {
|
|
28
28
|
"base": {
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://asdm.dev/schemas/manifest.schema.json",
|
|
3
|
+
"version": "0.1.1",
|
|
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.1"
|
|
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
|
+
}
|