@jigyasudham/veto 3.1.0 → 3.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.
Files changed (135) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +630 -627
  3. package/dist/agents/llm-runner.js +57 -57
  4. package/dist/cli/statusline.js +2 -2
  5. package/dist/cli.js +26 -26
  6. package/dist/memory/decisions.js +1 -1
  7. package/dist/memory/local.js +144 -144
  8. package/dist/memory/schema.js +228 -228
  9. package/dist/memory/sync.js +27 -27
  10. package/dist/memory/sync.js.map +1 -1
  11. package/dist/router/implicit-outcomes.js +4 -4
  12. package/dist/router/learning-updater.js +45 -45
  13. package/dist/server.js +1 -1
  14. package/dist/tools/compact.js +3 -3
  15. package/dist/transcripts/archive.js +5 -5
  16. package/dist/transcripts/ingest.js +6 -6
  17. package/dist/transcripts/mapping.js +5 -5
  18. package/dist/transcripts/pyramid.js +2 -2
  19. package/dist/transcripts/schema.js +104 -104
  20. package/dist/transcripts/search.js +3 -3
  21. package/dist/transcripts/vectors.js +2 -2
  22. package/package.json +70 -62
  23. package/server.json +23 -23
  24. package/dist/skills/development/skill-api-design.d.ts +0 -15
  25. package/dist/skills/development/skill-api-design.d.ts.map +0 -1
  26. package/dist/skills/development/skill-api-design.js +0 -313
  27. package/dist/skills/development/skill-api-design.js.map +0 -1
  28. package/dist/skills/development/skill-auth.d.ts +0 -15
  29. package/dist/skills/development/skill-auth.d.ts.map +0 -1
  30. package/dist/skills/development/skill-auth.js +0 -255
  31. package/dist/skills/development/skill-auth.js.map +0 -1
  32. package/dist/skills/development/skill-ci-cd.d.ts +0 -2
  33. package/dist/skills/development/skill-ci-cd.d.ts.map +0 -1
  34. package/dist/skills/development/skill-ci-cd.js +0 -2
  35. package/dist/skills/development/skill-ci-cd.js.map +0 -1
  36. package/dist/skills/development/skill-crud.d.ts +0 -15
  37. package/dist/skills/development/skill-crud.d.ts.map +0 -1
  38. package/dist/skills/development/skill-crud.js +0 -193
  39. package/dist/skills/development/skill-crud.js.map +0 -1
  40. package/dist/skills/development/skill-db-schema.d.ts +0 -2
  41. package/dist/skills/development/skill-db-schema.d.ts.map +0 -1
  42. package/dist/skills/development/skill-db-schema.js +0 -2
  43. package/dist/skills/development/skill-db-schema.js.map +0 -1
  44. package/dist/skills/development/skill-docker.d.ts +0 -2
  45. package/dist/skills/development/skill-docker.d.ts.map +0 -1
  46. package/dist/skills/development/skill-docker.js +0 -2
  47. package/dist/skills/development/skill-docker.js.map +0 -1
  48. package/dist/skills/development/skill-env-setup.d.ts +0 -2
  49. package/dist/skills/development/skill-env-setup.d.ts.map +0 -1
  50. package/dist/skills/development/skill-env-setup.js +0 -2
  51. package/dist/skills/development/skill-env-setup.js.map +0 -1
  52. package/dist/skills/development/skill-scaffold.d.ts +0 -15
  53. package/dist/skills/development/skill-scaffold.d.ts.map +0 -1
  54. package/dist/skills/development/skill-scaffold.js +0 -299
  55. package/dist/skills/development/skill-scaffold.js.map +0 -1
  56. package/dist/skills/intelligence/skill-complexity-score.d.ts +0 -15
  57. package/dist/skills/intelligence/skill-complexity-score.d.ts.map +0 -1
  58. package/dist/skills/intelligence/skill-complexity-score.js +0 -66
  59. package/dist/skills/intelligence/skill-complexity-score.js.map +0 -1
  60. package/dist/skills/intelligence/skill-cost-track.d.ts +0 -14
  61. package/dist/skills/intelligence/skill-cost-track.d.ts.map +0 -1
  62. package/dist/skills/intelligence/skill-cost-track.js +0 -36
  63. package/dist/skills/intelligence/skill-cost-track.js.map +0 -1
  64. package/dist/skills/intelligence/skill-learning-loop.d.ts +0 -15
  65. package/dist/skills/intelligence/skill-learning-loop.d.ts.map +0 -1
  66. package/dist/skills/intelligence/skill-learning-loop.js +0 -66
  67. package/dist/skills/intelligence/skill-learning-loop.js.map +0 -1
  68. package/dist/skills/intelligence/skill-pattern-detect.d.ts +0 -14
  69. package/dist/skills/intelligence/skill-pattern-detect.d.ts.map +0 -1
  70. package/dist/skills/intelligence/skill-pattern-detect.js +0 -35
  71. package/dist/skills/intelligence/skill-pattern-detect.js.map +0 -1
  72. package/dist/skills/intelligence/skill-rate-watch.d.ts +0 -15
  73. package/dist/skills/intelligence/skill-rate-watch.d.ts.map +0 -1
  74. package/dist/skills/intelligence/skill-rate-watch.js +0 -58
  75. package/dist/skills/intelligence/skill-rate-watch.js.map +0 -1
  76. package/dist/skills/memory/skill-context-compress.d.ts +0 -15
  77. package/dist/skills/memory/skill-context-compress.d.ts.map +0 -1
  78. package/dist/skills/memory/skill-context-compress.js +0 -82
  79. package/dist/skills/memory/skill-context-compress.js.map +0 -1
  80. package/dist/skills/memory/skill-cross-sync.d.ts +0 -15
  81. package/dist/skills/memory/skill-cross-sync.d.ts.map +0 -1
  82. package/dist/skills/memory/skill-cross-sync.js +0 -88
  83. package/dist/skills/memory/skill-cross-sync.js.map +0 -1
  84. package/dist/skills/memory/skill-decision-log.d.ts +0 -15
  85. package/dist/skills/memory/skill-decision-log.d.ts.map +0 -1
  86. package/dist/skills/memory/skill-decision-log.js +0 -103
  87. package/dist/skills/memory/skill-decision-log.js.map +0 -1
  88. package/dist/skills/memory/skill-session-restore.d.ts +0 -15
  89. package/dist/skills/memory/skill-session-restore.d.ts.map +0 -1
  90. package/dist/skills/memory/skill-session-restore.js +0 -39
  91. package/dist/skills/memory/skill-session-restore.js.map +0 -1
  92. package/dist/skills/memory/skill-session-save.d.ts +0 -15
  93. package/dist/skills/memory/skill-session-save.d.ts.map +0 -1
  94. package/dist/skills/memory/skill-session-save.js +0 -74
  95. package/dist/skills/memory/skill-session-save.js.map +0 -1
  96. package/dist/skills/quality/skill-accessibility.d.ts +0 -2
  97. package/dist/skills/quality/skill-accessibility.d.ts.map +0 -1
  98. package/dist/skills/quality/skill-accessibility.js +0 -2
  99. package/dist/skills/quality/skill-accessibility.js.map +0 -1
  100. package/dist/skills/quality/skill-code-review.d.ts +0 -15
  101. package/dist/skills/quality/skill-code-review.d.ts.map +0 -1
  102. package/dist/skills/quality/skill-code-review.js +0 -60
  103. package/dist/skills/quality/skill-code-review.js.map +0 -1
  104. package/dist/skills/quality/skill-docs-gen.d.ts +0 -2
  105. package/dist/skills/quality/skill-docs-gen.d.ts.map +0 -1
  106. package/dist/skills/quality/skill-docs-gen.js +0 -2
  107. package/dist/skills/quality/skill-docs-gen.js.map +0 -1
  108. package/dist/skills/quality/skill-perf-audit.d.ts +0 -2
  109. package/dist/skills/quality/skill-perf-audit.d.ts.map +0 -1
  110. package/dist/skills/quality/skill-perf-audit.js +0 -2
  111. package/dist/skills/quality/skill-perf-audit.js.map +0 -1
  112. package/dist/skills/quality/skill-security-scan.d.ts +0 -15
  113. package/dist/skills/quality/skill-security-scan.d.ts.map +0 -1
  114. package/dist/skills/quality/skill-security-scan.js +0 -67
  115. package/dist/skills/quality/skill-security-scan.js.map +0 -1
  116. package/dist/skills/quality/skill-test-suite.d.ts +0 -15
  117. package/dist/skills/quality/skill-test-suite.d.ts.map +0 -1
  118. package/dist/skills/quality/skill-test-suite.js +0 -274
  119. package/dist/skills/quality/skill-test-suite.js.map +0 -1
  120. package/dist/skills/workflow/skill-deploy.d.ts +0 -2
  121. package/dist/skills/workflow/skill-deploy.d.ts.map +0 -1
  122. package/dist/skills/workflow/skill-deploy.js +0 -2
  123. package/dist/skills/workflow/skill-deploy.js.map +0 -1
  124. package/dist/skills/workflow/skill-git-workflow.d.ts +0 -2
  125. package/dist/skills/workflow/skill-git-workflow.d.ts.map +0 -1
  126. package/dist/skills/workflow/skill-git-workflow.js +0 -2
  127. package/dist/skills/workflow/skill-git-workflow.js.map +0 -1
  128. package/dist/skills/workflow/skill-rollback.d.ts +0 -2
  129. package/dist/skills/workflow/skill-rollback.d.ts.map +0 -1
  130. package/dist/skills/workflow/skill-rollback.js +0 -2
  131. package/dist/skills/workflow/skill-rollback.js.map +0 -1
  132. package/dist/skills/workflow/skill-task-breakdown.d.ts +0 -2
  133. package/dist/skills/workflow/skill-task-breakdown.d.ts.map +0 -1
  134. package/dist/skills/workflow/skill-task-breakdown.js +0 -2
  135. package/dist/skills/workflow/skill-task-breakdown.js.map +0 -1
package/package.json CHANGED
@@ -1,62 +1,70 @@
1
- {
2
- "name": "@jigyasudham/veto",
3
- "mcpName": "io.github.jigyasudham/veto",
4
- "version": "3.1.0",
5
- "description": "93 agentic tools. 49 specialists. Every major AI CLI. Self-learning. Zero extra cost on subscriptions.",
6
- "keywords": [
7
- "mcp",
8
- "ai",
9
- "claude",
10
- "antigravity",
11
- "agents",
12
- "memory",
13
- "council",
14
- "gemini",
15
- "codex",
16
- "cursor",
17
- "windsurf",
18
- "vscode",
19
- "self-learning",
20
- "router",
21
- "workflow",
22
- "code-review",
23
- "agentic"
24
- ],
25
- "author": "Jigyasu Dham <jigyasudham18@gmail.com>",
26
- "license": "MIT",
27
- "type": "module",
28
- "engines": {
29
- "node": ">=22.13.0 <23.0.0 || >=23.4.0"
30
- },
31
- "bin": {
32
- "veto": "dist/cli.js",
33
- "veto-server": "dist/server.js"
34
- },
35
- "files": [
36
- "dist",
37
- "server.json"
38
- ],
39
- "main": "./dist/server.js",
40
- "scripts": {
41
- "build": "tsc",
42
- "prepublishOnly": "npm run build",
43
- "dev": "tsx src/cli.ts",
44
- "start": "node dist/server.js",
45
- "init": "tsx src/cli.ts init",
46
- "test": "vitest run",
47
- "test:watch": "vitest",
48
- "test:coverage": "vitest run --coverage"
49
- },
50
- "dependencies": {
51
- "@jigyasudham/veto-model": "1.0.0",
52
- "@modelcontextprotocol/sdk": "^1.0.0",
53
- "web-tree-sitter": "^0.26.9",
54
- "zod": "^4.4.3"
55
- },
56
- "devDependencies": {
57
- "@types/node": "^22.0.0",
58
- "tsx": "^4.7.0",
59
- "typescript": "^5.3.0",
60
- "vitest": "^2.1.9"
61
- }
62
- }
1
+ {
2
+ "name": "@jigyasudham/veto",
3
+ "mcpName": "io.github.jigyasudham/veto",
4
+ "version": "3.1.1",
5
+ "description": "93 agentic tools. 49 specialists. Every major AI CLI. Self-learning. Zero extra cost on subscriptions.",
6
+ "keywords": [
7
+ "mcp",
8
+ "ai",
9
+ "claude",
10
+ "antigravity",
11
+ "agents",
12
+ "memory",
13
+ "council",
14
+ "gemini",
15
+ "codex",
16
+ "cursor",
17
+ "windsurf",
18
+ "vscode",
19
+ "self-learning",
20
+ "router",
21
+ "workflow",
22
+ "code-review",
23
+ "agentic"
24
+ ],
25
+ "author": "Jigyasu Dham <jigyasudham18@gmail.com>",
26
+ "license": "MIT",
27
+ "repository": {
28
+ "type": "git",
29
+ "url": "git+https://github.com/jigyasudham/veto.git"
30
+ },
31
+ "bugs": {
32
+ "url": "https://github.com/jigyasudham/veto/issues"
33
+ },
34
+ "homepage": "https://github.com/jigyasudham/veto#readme",
35
+ "type": "module",
36
+ "engines": {
37
+ "node": ">=22.13.0 <23.0.0 || >=23.4.0"
38
+ },
39
+ "bin": {
40
+ "veto": "dist/cli.js",
41
+ "veto-server": "dist/server.js"
42
+ },
43
+ "files": [
44
+ "dist",
45
+ "server.json"
46
+ ],
47
+ "main": "./dist/server.js",
48
+ "scripts": {
49
+ "build": "tsc",
50
+ "prepublishOnly": "npm run build",
51
+ "dev": "tsx src/cli.ts",
52
+ "start": "node dist/server.js",
53
+ "init": "tsx src/cli.ts init",
54
+ "test": "vitest run",
55
+ "test:watch": "vitest",
56
+ "test:coverage": "vitest run --coverage"
57
+ },
58
+ "dependencies": {
59
+ "@jigyasudham/veto-model": "1.0.0",
60
+ "@modelcontextprotocol/sdk": "^1.0.0",
61
+ "web-tree-sitter": "^0.26.9",
62
+ "zod": "^4.4.3"
63
+ },
64
+ "devDependencies": {
65
+ "@types/node": "^22.0.0",
66
+ "tsx": "^4.7.0",
67
+ "typescript": "^5.3.0",
68
+ "vitest": "^2.1.9"
69
+ }
70
+ }
package/server.json CHANGED
@@ -1,23 +1,23 @@
1
- {
2
- "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
- "name": "io.github.jigyasudham/veto",
4
- "title": "Veto",
5
- "description": "93 agentic MCP tools + 49 specialist agents for every major AI CLI. Self-learning, no API keys.",
6
- "repository": {
7
- "url": "https://github.com/jigyasudham/veto",
8
- "source": "github"
9
- },
10
- "websiteUrl": "https://github.com/jigyasudham/veto#readme",
11
- "version": "3.1.0",
12
- "packages": [
13
- {
14
- "registryType": "npm",
15
- "registryBaseUrl": "https://registry.npmjs.org",
16
- "identifier": "@jigyasudham/veto",
17
- "version": "3.1.0",
18
- "transport": {
19
- "type": "stdio"
20
- }
21
- }
22
- ]
23
- }
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.jigyasudham/veto",
4
+ "title": "Veto",
5
+ "description": "93 agentic MCP tools + 49 specialist agents for every major AI CLI. Self-learning, no API keys.",
6
+ "repository": {
7
+ "url": "https://github.com/jigyasudham/veto",
8
+ "source": "github"
9
+ },
10
+ "websiteUrl": "https://github.com/jigyasudham/veto#readme",
11
+ "version": "3.1.1",
12
+ "packages": [
13
+ {
14
+ "registryType": "npm",
15
+ "registryBaseUrl": "https://registry.npmjs.org",
16
+ "identifier": "@jigyasudham/veto",
17
+ "version": "3.1.1",
18
+ "transport": {
19
+ "type": "stdio"
20
+ }
21
+ }
22
+ ]
23
+ }
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-api-design.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-api-design.d.ts","sourceRoot":"","sources":["../../../src/skills/development/skill-api-design.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAuQD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAkDlD"}
@@ -1,313 +0,0 @@
1
- // Skill: api-design — REST API design guide with OpenAPI 3.0 skeleton
2
- const TEMPLATE = `
3
- openapi: 3.0.3
4
- info:
5
- title: My API
6
- description: >
7
- RESTful API for My Application.
8
- All endpoints require a Bearer token unless marked as public.
9
- version: 1.0.0
10
- contact:
11
- name: API Support
12
- email: api@example.com
13
-
14
- servers:
15
- - url: https://api.example.com/v1
16
- description: Production
17
- - url: http://localhost:3000/v1
18
- description: Local development
19
-
20
- security:
21
- - BearerAuth: []
22
-
23
- # ── Components ─────────────────────────────────────────────────────────────
24
- components:
25
- securitySchemes:
26
- BearerAuth:
27
- type: http
28
- scheme: bearer
29
- bearerFormat: JWT
30
-
31
- schemas:
32
- # Pagination wrapper
33
- PaginatedResponse:
34
- type: object
35
- required: [data, meta]
36
- properties:
37
- data:
38
- type: array
39
- items: {}
40
- meta:
41
- type: object
42
- required: [total, page, pageSize, totalPages]
43
- properties:
44
- total: { type: integer, example: 142 }
45
- page: { type: integer, example: 1 }
46
- pageSize: { type: integer, example: 20 }
47
- totalPages: { type: integer, example: 8 }
48
-
49
- # Error envelope
50
- ErrorResponse:
51
- type: object
52
- required: [error]
53
- properties:
54
- error:
55
- type: object
56
- required: [code, message]
57
- properties:
58
- code: { type: string, example: VALIDATION_ERROR }
59
- message: { type: string, example: "name must not be empty" }
60
- details: { type: array, items: { type: string } }
61
-
62
- # Resource example
63
- Item:
64
- type: object
65
- required: [id, name, userId, createdAt, updatedAt]
66
- properties:
67
- id: { type: string, format: uuid }
68
- name: { type: string, minLength: 1, maxLength: 100 }
69
- description: { type: string, maxLength: 500 }
70
- userId: { type: string, format: uuid }
71
- createdAt: { type: string, format: date-time }
72
- updatedAt: { type: string, format: date-time }
73
-
74
- CreateItemRequest:
75
- type: object
76
- required: [name]
77
- properties:
78
- name: { type: string, minLength: 1, maxLength: 100 }
79
- description: { type: string, maxLength: 500 }
80
-
81
- UpdateItemRequest:
82
- type: object
83
- minProperties: 1
84
- properties:
85
- name: { type: string, minLength: 1, maxLength: 100 }
86
- description: { type: string, maxLength: 500 }
87
-
88
- parameters:
89
- ItemId:
90
- name: id
91
- in: path
92
- required: true
93
- schema: { type: string, format: uuid }
94
- PageParam:
95
- name: page
96
- in: query
97
- schema: { type: integer, minimum: 1, default: 1 }
98
- PageSizeParam:
99
- name: pageSize
100
- in: query
101
- schema: { type: integer, minimum: 1, maximum: 100, default: 20 }
102
- SortParam:
103
- name: sort
104
- in: query
105
- schema: { type: string, enum: [createdAt, updatedAt, name], default: createdAt }
106
- OrderParam:
107
- name: order
108
- in: query
109
- schema: { type: string, enum: [asc, desc], default: desc }
110
-
111
- responses:
112
- Unauthorized:
113
- description: Missing or invalid authentication token
114
- content:
115
- application/json:
116
- schema: { $ref: '#/components/schemas/ErrorResponse' }
117
- Forbidden:
118
- description: Authenticated but not authorised to access this resource
119
- content:
120
- application/json:
121
- schema: { $ref: '#/components/schemas/ErrorResponse' }
122
- NotFound:
123
- description: Resource not found
124
- content:
125
- application/json:
126
- schema: { $ref: '#/components/schemas/ErrorResponse' }
127
- UnprocessableEntity:
128
- description: Validation error in request body
129
- content:
130
- application/json:
131
- schema: { $ref: '#/components/schemas/ErrorResponse' }
132
- TooManyRequests:
133
- description: Rate limit exceeded
134
- headers:
135
- Retry-After: { schema: { type: integer } }
136
- content:
137
- application/json:
138
- schema: { $ref: '#/components/schemas/ErrorResponse' }
139
-
140
- # ── Paths ──────────────────────────────────────────────────────────────────
141
- paths:
142
- /items:
143
- get:
144
- operationId: listItems
145
- summary: List items belonging to the authenticated user
146
- tags: [Items]
147
- parameters:
148
- - $ref: '#/components/parameters/PageParam'
149
- - $ref: '#/components/parameters/PageSizeParam'
150
- - $ref: '#/components/parameters/SortParam'
151
- - $ref: '#/components/parameters/OrderParam'
152
- responses:
153
- '200':
154
- description: Paginated list of items
155
- content:
156
- application/json:
157
- schema:
158
- allOf:
159
- - $ref: '#/components/schemas/PaginatedResponse'
160
- - properties:
161
- data:
162
- type: array
163
- items: { $ref: '#/components/schemas/Item' }
164
- '401': { $ref: '#/components/responses/Unauthorized' }
165
- '429': { $ref: '#/components/responses/TooManyRequests' }
166
-
167
- post:
168
- operationId: createItem
169
- summary: Create a new item
170
- tags: [Items]
171
- requestBody:
172
- required: true
173
- content:
174
- application/json:
175
- schema: { $ref: '#/components/schemas/CreateItemRequest' }
176
- responses:
177
- '201':
178
- description: Item created
179
- headers:
180
- Location: { schema: { type: string }, description: URL of the created item }
181
- content:
182
- application/json:
183
- schema:
184
- type: object
185
- properties:
186
- data: { $ref: '#/components/schemas/Item' }
187
- '401': { $ref: '#/components/responses/Unauthorized' }
188
- '422': { $ref: '#/components/responses/UnprocessableEntity' }
189
-
190
- /items/{id}:
191
- parameters:
192
- - $ref: '#/components/parameters/ItemId'
193
-
194
- get:
195
- operationId: getItem
196
- summary: Get a single item by ID
197
- tags: [Items]
198
- responses:
199
- '200':
200
- description: Item found
201
- content:
202
- application/json:
203
- schema:
204
- type: object
205
- properties:
206
- data: { $ref: '#/components/schemas/Item' }
207
- '401': { $ref: '#/components/responses/Unauthorized' }
208
- '403': { $ref: '#/components/responses/Forbidden' }
209
- '404': { $ref: '#/components/responses/NotFound' }
210
-
211
- patch:
212
- operationId: updateItem
213
- summary: Partially update an item (only provided fields are changed)
214
- tags: [Items]
215
- requestBody:
216
- required: true
217
- content:
218
- application/json:
219
- schema: { $ref: '#/components/schemas/UpdateItemRequest' }
220
- responses:
221
- '200':
222
- description: Item updated
223
- content:
224
- application/json:
225
- schema:
226
- type: object
227
- properties:
228
- data: { $ref: '#/components/schemas/Item' }
229
- '401': { $ref: '#/components/responses/Unauthorized' }
230
- '403': { $ref: '#/components/responses/Forbidden' }
231
- '404': { $ref: '#/components/responses/NotFound' }
232
- '422': { $ref: '#/components/responses/UnprocessableEntity' }
233
-
234
- delete:
235
- operationId: deleteItem
236
- summary: Delete an item
237
- tags: [Items]
238
- responses:
239
- '204':
240
- description: Item deleted — no content returned
241
- '401': { $ref: '#/components/responses/Unauthorized' }
242
- '403': { $ref: '#/components/responses/Forbidden' }
243
- '404': { $ref: '#/components/responses/NotFound' }
244
-
245
- /health:
246
- get:
247
- operationId: getHealth
248
- summary: Health check — no authentication required
249
- tags: [System]
250
- security: []
251
- responses:
252
- '200':
253
- description: Service is healthy
254
- content:
255
- application/json:
256
- schema:
257
- type: object
258
- properties:
259
- status: { type: string, example: ok }
260
- uptime: { type: number, example: 12345.6 }
261
- `.trim();
262
- export function run(input) {
263
- return {
264
- skill: 'api-design',
265
- template: TEMPLATE,
266
- checklist: [
267
- 'Choose a consistent resource naming convention: plural nouns, kebab-case (e.g., /user-profiles)',
268
- 'Version the API in the URL path: /v1/resource (not Accept header for most APIs)',
269
- 'Use correct HTTP methods: GET (read), POST (create), PUT (replace), PATCH (partial update), DELETE (remove)',
270
- 'Use correct HTTP status codes: 200 OK, 201 Created, 204 No Content, 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 409 Conflict, 422 Unprocessable Entity, 429 Too Many Requests, 500 Internal Server Error',
271
- 'Always return a consistent error envelope: { error: { code, message, details? } }',
272
- 'Wrap list responses in { data: [], meta: { total, page, pageSize, totalPages } }',
273
- 'Add Location header on 201 Created pointing to the new resource URL',
274
- 'Implement cursor-based pagination for large, frequently-updated datasets',
275
- 'Support filtering via query parameters: ?status=active&userId=xxx',
276
- 'Support sorting via ?sort=createdAt&order=desc',
277
- 'Set authentication via Authorization: Bearer <token> header (not query param)',
278
- 'Define all schemas in OpenAPI components/schemas and $ref them — no inline duplication',
279
- 'Document every response code, including error responses, in the OpenAPI spec',
280
- 'Apply rate limiting headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset',
281
- 'Set security headers: CORS, Content-Type: application/json, X-Content-Type-Options: nosniff',
282
- 'Use idempotency keys for POST endpoints that create resources (Idempotency-Key header)',
283
- 'Do not nest resources more than 2 levels deep: /users/{id}/items, not /users/{id}/orders/{id}/items/{id}/tags',
284
- 'Return 204 with no body for successful DELETE, not 200 with empty object',
285
- 'Use ISO 8601 for all date/time fields: "2024-01-15T10:30:00Z"',
286
- 'Generate an SDK or client library from the OpenAPI spec using openapi-generator',
287
- ],
288
- patterns: [
289
- 'Resource-oriented design: endpoints represent nouns, HTTP methods are the verbs',
290
- 'Envelope pattern: { data: T, meta: M } for lists; { data: T } for single resources',
291
- 'Error code + message pattern: machine-readable code + human-readable message',
292
- 'Consistent pagination: cursor-based for feeds, offset/page for admin views',
293
- 'OpenAPI-first design: write the spec before implementing, validate implementation against it',
294
- ],
295
- gotchas: [
296
- 'Using GET with a request body for search — use POST /resource/search or query params instead',
297
- 'Returning 200 with { success: false } — use the correct status code, not always 200',
298
- 'Inconsistent pluralisation: /user vs /users — pick one convention and apply everywhere',
299
- 'Exposing internal IDs (auto-increment integers) — use UUIDs to prevent IDOR and enumeration',
300
- 'Not documenting rate limits in the spec — clients cannot implement retry logic without this',
301
- 'CORS misconfiguration: wildcard origin with credentials:true is invalid and silently ignored by browsers',
302
- 'Changing URL structure or removing fields without a deprecation period — breaks existing clients',
303
- ],
304
- resources: [
305
- 'https://spec.openapis.org/oas/v3.0.3',
306
- 'https://cloud.google.com/apis/design',
307
- 'https://cheatsheetseries.owasp.org/cheatsheets/REST_Security_Cheat_Sheet.html',
308
- 'https://restfulapi.net/',
309
- 'https://www.rfc-editor.org/rfc/rfc9457 (Problem Details for HTTP APIs)',
310
- ],
311
- };
312
- }
313
- //# sourceMappingURL=skill-api-design.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-api-design.js","sourceRoot":"","sources":["../../../src/skills/development/skill-api-design.ts"],"names":[],"mappings":"AAAA,sEAAsE;AAiBtE,MAAM,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmQhB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,GAAG,CAAC,KAAiB;IACnC,OAAO;QACL,KAAK,EAAE,YAAY;QACnB,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE;YACT,iGAAiG;YACjG,iFAAiF;YACjF,6GAA6G;YAC7G,+NAA+N;YAC/N,mFAAmF;YACnF,kFAAkF;YAClF,qEAAqE;YACrE,0EAA0E;YAC1E,mEAAmE;YACnE,gDAAgD;YAChD,+EAA+E;YAC/E,wFAAwF;YACxF,8EAA8E;YAC9E,0FAA0F;YAC1F,6FAA6F;YAC7F,wFAAwF;YACxF,+GAA+G;YAC/G,0EAA0E;YAC1E,+DAA+D;YAC/D,iFAAiF;SAClF;QACD,QAAQ,EAAE;YACR,iFAAiF;YACjF,oFAAoF;YACpF,8EAA8E;YAC9E,4EAA4E;YAC5E,8FAA8F;SAC/F;QACD,OAAO,EAAE;YACP,8FAA8F;YAC9F,qFAAqF;YACrF,wFAAwF;YACxF,6FAA6F;YAC7F,6FAA6F;YAC7F,0GAA0G;YAC1G,kGAAkG;SACnG;QACD,SAAS,EAAE;YACT,sCAAsC;YACtC,sCAAsC;YACtC,+EAA+E;YAC/E,yBAAyB;YACzB,wEAAwE;SACzE;KACF,CAAC;AACJ,CAAC"}
@@ -1,15 +0,0 @@
1
- export interface SkillInput {
2
- task: string;
3
- context?: string;
4
- options?: Record<string, unknown>;
5
- }
6
- export interface SkillOutput {
7
- skill: string;
8
- template?: string;
9
- checklist: string[];
10
- patterns: string[];
11
- gotchas: string[];
12
- resources: string[];
13
- }
14
- export declare function run(input: SkillInput): SkillOutput;
15
- //# sourceMappingURL=skill-auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-auth.d.ts","sourceRoot":"","sources":["../../../src/skills/development/skill-auth.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AA6MD,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CAkDlD"}