@jigyasudham/veto 3.1.0 → 3.1.2
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/LICENSE +21 -21
- package/README.md +633 -627
- package/dist/agents/llm-runner.js +57 -57
- package/dist/cli/statusline.js +2 -2
- package/dist/cli.js +26 -26
- package/dist/memory/decisions.js +1 -1
- package/dist/memory/local.js +144 -144
- package/dist/memory/schema.js +228 -228
- package/dist/memory/sync.js +27 -27
- package/dist/memory/sync.js.map +1 -1
- package/dist/router/implicit-outcomes.js +4 -4
- package/dist/router/learning-updater.js +45 -45
- package/dist/server.js +1 -1
- package/dist/tools/compact.js +3 -3
- package/dist/transcripts/archive.js +5 -5
- package/dist/transcripts/ingest.js +6 -6
- package/dist/transcripts/mapping.js +5 -5
- package/dist/transcripts/pyramid.js +2 -2
- package/dist/transcripts/schema.js +104 -104
- package/dist/transcripts/search.js +3 -3
- package/dist/transcripts/vectors.js +2 -2
- package/package.json +70 -62
- package/server.json +23 -23
- package/dist/skills/development/skill-api-design.d.ts +0 -15
- package/dist/skills/development/skill-api-design.d.ts.map +0 -1
- package/dist/skills/development/skill-api-design.js +0 -313
- package/dist/skills/development/skill-api-design.js.map +0 -1
- package/dist/skills/development/skill-auth.d.ts +0 -15
- package/dist/skills/development/skill-auth.d.ts.map +0 -1
- package/dist/skills/development/skill-auth.js +0 -255
- package/dist/skills/development/skill-auth.js.map +0 -1
- package/dist/skills/development/skill-ci-cd.d.ts +0 -2
- package/dist/skills/development/skill-ci-cd.d.ts.map +0 -1
- package/dist/skills/development/skill-ci-cd.js +0 -2
- package/dist/skills/development/skill-ci-cd.js.map +0 -1
- package/dist/skills/development/skill-crud.d.ts +0 -15
- package/dist/skills/development/skill-crud.d.ts.map +0 -1
- package/dist/skills/development/skill-crud.js +0 -193
- package/dist/skills/development/skill-crud.js.map +0 -1
- package/dist/skills/development/skill-db-schema.d.ts +0 -2
- package/dist/skills/development/skill-db-schema.d.ts.map +0 -1
- package/dist/skills/development/skill-db-schema.js +0 -2
- package/dist/skills/development/skill-db-schema.js.map +0 -1
- package/dist/skills/development/skill-docker.d.ts +0 -2
- package/dist/skills/development/skill-docker.d.ts.map +0 -1
- package/dist/skills/development/skill-docker.js +0 -2
- package/dist/skills/development/skill-docker.js.map +0 -1
- package/dist/skills/development/skill-env-setup.d.ts +0 -2
- package/dist/skills/development/skill-env-setup.d.ts.map +0 -1
- package/dist/skills/development/skill-env-setup.js +0 -2
- package/dist/skills/development/skill-env-setup.js.map +0 -1
- package/dist/skills/development/skill-scaffold.d.ts +0 -15
- package/dist/skills/development/skill-scaffold.d.ts.map +0 -1
- package/dist/skills/development/skill-scaffold.js +0 -299
- package/dist/skills/development/skill-scaffold.js.map +0 -1
- package/dist/skills/intelligence/skill-complexity-score.d.ts +0 -15
- package/dist/skills/intelligence/skill-complexity-score.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-complexity-score.js +0 -66
- package/dist/skills/intelligence/skill-complexity-score.js.map +0 -1
- package/dist/skills/intelligence/skill-cost-track.d.ts +0 -14
- package/dist/skills/intelligence/skill-cost-track.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-cost-track.js +0 -36
- package/dist/skills/intelligence/skill-cost-track.js.map +0 -1
- package/dist/skills/intelligence/skill-learning-loop.d.ts +0 -15
- package/dist/skills/intelligence/skill-learning-loop.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-learning-loop.js +0 -66
- package/dist/skills/intelligence/skill-learning-loop.js.map +0 -1
- package/dist/skills/intelligence/skill-pattern-detect.d.ts +0 -14
- package/dist/skills/intelligence/skill-pattern-detect.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-pattern-detect.js +0 -35
- package/dist/skills/intelligence/skill-pattern-detect.js.map +0 -1
- package/dist/skills/intelligence/skill-rate-watch.d.ts +0 -15
- package/dist/skills/intelligence/skill-rate-watch.d.ts.map +0 -1
- package/dist/skills/intelligence/skill-rate-watch.js +0 -58
- package/dist/skills/intelligence/skill-rate-watch.js.map +0 -1
- package/dist/skills/memory/skill-context-compress.d.ts +0 -15
- package/dist/skills/memory/skill-context-compress.d.ts.map +0 -1
- package/dist/skills/memory/skill-context-compress.js +0 -82
- package/dist/skills/memory/skill-context-compress.js.map +0 -1
- package/dist/skills/memory/skill-cross-sync.d.ts +0 -15
- package/dist/skills/memory/skill-cross-sync.d.ts.map +0 -1
- package/dist/skills/memory/skill-cross-sync.js +0 -88
- package/dist/skills/memory/skill-cross-sync.js.map +0 -1
- package/dist/skills/memory/skill-decision-log.d.ts +0 -15
- package/dist/skills/memory/skill-decision-log.d.ts.map +0 -1
- package/dist/skills/memory/skill-decision-log.js +0 -103
- package/dist/skills/memory/skill-decision-log.js.map +0 -1
- package/dist/skills/memory/skill-session-restore.d.ts +0 -15
- package/dist/skills/memory/skill-session-restore.d.ts.map +0 -1
- package/dist/skills/memory/skill-session-restore.js +0 -39
- package/dist/skills/memory/skill-session-restore.js.map +0 -1
- package/dist/skills/memory/skill-session-save.d.ts +0 -15
- package/dist/skills/memory/skill-session-save.d.ts.map +0 -1
- package/dist/skills/memory/skill-session-save.js +0 -74
- package/dist/skills/memory/skill-session-save.js.map +0 -1
- package/dist/skills/quality/skill-accessibility.d.ts +0 -2
- package/dist/skills/quality/skill-accessibility.d.ts.map +0 -1
- package/dist/skills/quality/skill-accessibility.js +0 -2
- package/dist/skills/quality/skill-accessibility.js.map +0 -1
- package/dist/skills/quality/skill-code-review.d.ts +0 -15
- package/dist/skills/quality/skill-code-review.d.ts.map +0 -1
- package/dist/skills/quality/skill-code-review.js +0 -60
- package/dist/skills/quality/skill-code-review.js.map +0 -1
- package/dist/skills/quality/skill-docs-gen.d.ts +0 -2
- package/dist/skills/quality/skill-docs-gen.d.ts.map +0 -1
- package/dist/skills/quality/skill-docs-gen.js +0 -2
- package/dist/skills/quality/skill-docs-gen.js.map +0 -1
- package/dist/skills/quality/skill-perf-audit.d.ts +0 -2
- package/dist/skills/quality/skill-perf-audit.d.ts.map +0 -1
- package/dist/skills/quality/skill-perf-audit.js +0 -2
- package/dist/skills/quality/skill-perf-audit.js.map +0 -1
- package/dist/skills/quality/skill-security-scan.d.ts +0 -15
- package/dist/skills/quality/skill-security-scan.d.ts.map +0 -1
- package/dist/skills/quality/skill-security-scan.js +0 -67
- package/dist/skills/quality/skill-security-scan.js.map +0 -1
- package/dist/skills/quality/skill-test-suite.d.ts +0 -15
- package/dist/skills/quality/skill-test-suite.d.ts.map +0 -1
- package/dist/skills/quality/skill-test-suite.js +0 -274
- package/dist/skills/quality/skill-test-suite.js.map +0 -1
- package/dist/skills/workflow/skill-deploy.d.ts +0 -2
- package/dist/skills/workflow/skill-deploy.d.ts.map +0 -1
- package/dist/skills/workflow/skill-deploy.js +0 -2
- package/dist/skills/workflow/skill-deploy.js.map +0 -1
- package/dist/skills/workflow/skill-git-workflow.d.ts +0 -2
- package/dist/skills/workflow/skill-git-workflow.d.ts.map +0 -1
- package/dist/skills/workflow/skill-git-workflow.js +0 -2
- package/dist/skills/workflow/skill-git-workflow.js.map +0 -1
- package/dist/skills/workflow/skill-rollback.d.ts +0 -2
- package/dist/skills/workflow/skill-rollback.d.ts.map +0 -1
- package/dist/skills/workflow/skill-rollback.js +0 -2
- package/dist/skills/workflow/skill-rollback.js.map +0 -1
- package/dist/skills/workflow/skill-task-breakdown.d.ts +0 -2
- package/dist/skills/workflow/skill-task-breakdown.d.ts.map +0 -1
- package/dist/skills/workflow/skill-task-breakdown.js +0 -2
- 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.
|
|
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
|
-
"
|
|
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
|
-
|
|
1
|
+
{
|
|
2
|
+
"name": "@jigyasudham/veto",
|
|
3
|
+
"mcpName": "io.github.jigyasudham/veto",
|
|
4
|
+
"version": "3.1.2",
|
|
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.1",
|
|
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.
|
|
12
|
-
"packages": [
|
|
13
|
-
{
|
|
14
|
-
"registryType": "npm",
|
|
15
|
-
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
|
-
"identifier": "@jigyasudham/veto",
|
|
17
|
-
"version": "3.1.
|
|
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.2",
|
|
12
|
+
"packages": [
|
|
13
|
+
{
|
|
14
|
+
"registryType": "npm",
|
|
15
|
+
"registryBaseUrl": "https://registry.npmjs.org",
|
|
16
|
+
"identifier": "@jigyasudham/veto",
|
|
17
|
+
"version": "3.1.2",
|
|
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"}
|