@dedesfr/prompter 0.8.22 → 0.9.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/CHANGELOG.md +68 -0
- package/dist/cli/index.js +1 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/init.d.ts +1 -7
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +32 -294
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +17 -40
- package/dist/commands/update.js.map +1 -1
- package/dist/core/configurators/slash/antigravity.d.ts +2 -5
- package/dist/core/configurators/slash/antigravity.d.ts.map +1 -1
- package/dist/core/configurators/slash/antigravity.js +2 -57
- package/dist/core/configurators/slash/antigravity.js.map +1 -1
- package/dist/core/configurators/slash/base.d.ts +6 -18
- package/dist/core/configurators/slash/base.d.ts.map +1 -1
- package/dist/core/configurators/slash/base.js +8 -77
- package/dist/core/configurators/slash/base.js.map +1 -1
- package/dist/core/configurators/slash/claude.d.ts +2 -5
- package/dist/core/configurators/slash/claude.d.ts.map +1 -1
- package/dist/core/configurators/slash/claude.js +2 -57
- package/dist/core/configurators/slash/claude.js.map +1 -1
- package/dist/core/configurators/slash/codex.d.ts +2 -5
- package/dist/core/configurators/slash/codex.d.ts.map +1 -1
- package/dist/core/configurators/slash/codex.js +2 -57
- package/dist/core/configurators/slash/codex.js.map +1 -1
- package/dist/core/configurators/slash/droid.d.ts +2 -5
- package/dist/core/configurators/slash/droid.d.ts.map +1 -1
- package/dist/core/configurators/slash/droid.js +2 -32
- package/dist/core/configurators/slash/droid.js.map +1 -1
- package/dist/core/configurators/slash/forge.d.ts +2 -5
- package/dist/core/configurators/slash/forge.d.ts.map +1 -1
- package/dist/core/configurators/slash/forge.js +2 -32
- package/dist/core/configurators/slash/forge.js.map +1 -1
- package/dist/core/configurators/slash/github-copilot.d.ts +2 -7
- package/dist/core/configurators/slash/github-copilot.d.ts.map +1 -1
- package/dist/core/configurators/slash/github-copilot.js +2 -96
- package/dist/core/configurators/slash/github-copilot.js.map +1 -1
- package/dist/core/configurators/slash/index.d.ts +1 -1
- package/dist/core/configurators/slash/index.d.ts.map +1 -1
- package/dist/core/configurators/slash/index.js +1 -1
- package/dist/core/configurators/slash/index.js.map +1 -1
- package/dist/core/configurators/slash/kilocode.d.ts +2 -5
- package/dist/core/configurators/slash/kilocode.d.ts.map +1 -1
- package/dist/core/configurators/slash/kilocode.js +2 -57
- package/dist/core/configurators/slash/kilocode.js.map +1 -1
- package/dist/core/configurators/slash/opencode.d.ts +2 -5
- package/dist/core/configurators/slash/opencode.d.ts.map +1 -1
- package/dist/core/configurators/slash/opencode.js +2 -57
- package/dist/core/configurators/slash/opencode.js.map +1 -1
- package/dist/core/configurators/slash/registry.d.ts +4 -4
- package/dist/core/configurators/slash/registry.d.ts.map +1 -1
- package/dist/core/configurators/slash/registry.js.map +1 -1
- package/dist/core/templates/index.d.ts +0 -1
- package/dist/core/templates/index.d.ts.map +1 -1
- package/dist/core/templates/index.js +0 -1
- package/dist/core/templates/index.js.map +1 -1
- package/package.json +1 -1
- package/skills/ai-humanizer/SKILL.md +50 -0
- package/skills/api-contract-generator/SKILL.md +243 -0
- package/skills/apply/SKILL.md +23 -0
- package/skills/archive/SKILL.md +27 -0
- package/skills/design-system/SKILL.md +216 -0
- package/skills/document-explainer/SKILL.md +155 -0
- package/skills/enhance/SKILL.md +47 -0
- package/skills/epic-generator/SKILL.md +204 -0
- package/skills/epic-single/SKILL.md +63 -0
- package/skills/erd-generator/SKILL.md +138 -0
- package/skills/fsd-generator/SKILL.md +163 -0
- package/skills/prd-agent-generator/SKILL.md +132 -0
- package/skills/prd-generator/SKILL.md +211 -0
- package/skills/product-brief/SKILL.md +141 -0
- package/skills/project-orchestrator/SKILL.md +15 -6
- package/skills/project-orchestrator/assets/caddy-vps-setup.md +180 -0
- package/skills/proposal/SKILL.md +28 -0
- package/skills/qa-test-scenario/SKILL.md +149 -0
- package/skills/skill-creator/SKILL.md +173 -0
- package/skills/story-generator/SKILL.md +285 -0
- package/skills/story-single/SKILL.md +86 -0
- package/skills/tdd-generator/SKILL.md +300 -0
- package/skills/tdd-lite-generator/SKILL.md +230 -0
- package/skills/wireframe-generator/SKILL.md +227 -0
- package/src/cli/index.ts +1 -1
- package/src/commands/init.ts +32 -334
- package/src/commands/update.ts +20 -47
- package/src/core/configurators/slash/antigravity.ts +2 -62
- package/src/core/configurators/slash/base.ts +11 -105
- package/src/core/configurators/slash/claude.ts +2 -62
- package/src/core/configurators/slash/codex.ts +2 -62
- package/src/core/configurators/slash/droid.ts +2 -36
- package/src/core/configurators/slash/forge.ts +2 -36
- package/src/core/configurators/slash/github-copilot.ts +2 -106
- package/src/core/configurators/slash/index.ts +1 -1
- package/src/core/configurators/slash/kilocode.ts +2 -62
- package/src/core/configurators/slash/opencode.ts +2 -62
- package/src/core/configurators/slash/registry.ts +5 -5
- package/src/core/templates/index.ts +0 -1
- package/dist/core/templates/slash-command-templates.d.ts +0 -7
- package/dist/core/templates/slash-command-templates.d.ts.map +0 -1
- package/dist/core/templates/slash-command-templates.js +0 -1041
- package/dist/core/templates/slash-command-templates.js.map +0 -1
- package/src/core/templates/slash-command-templates.ts +0 -1068
|
@@ -1,62 +1,7 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
enhance: '.opencode/command/prompter-enhance.md',
|
|
4
|
-
'prd-generator': '.opencode/command/prd-generator.md',
|
|
5
|
-
'prd-agent-generator': '.opencode/command/prd-agent-generator.md',
|
|
6
|
-
'product-brief': '.opencode/command/product-brief.md',
|
|
7
|
-
'epic-single': '.opencode/command/epic-single.md',
|
|
8
|
-
'epic-generator': '.opencode/command/epic-generator.md',
|
|
9
|
-
'story-single': '.opencode/command/story-single.md',
|
|
10
|
-
'story-generator': '.opencode/command/story-generator.md',
|
|
11
|
-
'qa-test-scenario': '.opencode/command/qa-test-scenario.md',
|
|
12
|
-
'skill-creator': '.opencode/command/skill-creator.md',
|
|
13
|
-
'ai-humanizer': '.opencode/command/ai-humanizer.md',
|
|
14
|
-
'api-contract-generator': '.opencode/command/api-contract-generator.md',
|
|
15
|
-
'apply': '.opencode/command/apply.md',
|
|
16
|
-
'archive': '.opencode/command/archive.md',
|
|
17
|
-
'design-system': '.opencode/command/design-system.md',
|
|
18
|
-
'erd-generator': '.opencode/command/erd-generator.md',
|
|
19
|
-
'fsd-generator': '.opencode/command/fsd-generator.md',
|
|
20
|
-
'proposal': '.opencode/command/proposal.md',
|
|
21
|
-
'tdd-generator': '.opencode/command/tdd-generator.md',
|
|
22
|
-
'tdd-lite-generator': '.opencode/command/tdd-lite-generator.md',
|
|
23
|
-
'wireframe-generator': '.opencode/command/wireframe-generator.md',
|
|
24
|
-
'document-explainer': '.opencode/command/document-explainer.md'
|
|
25
|
-
};
|
|
26
|
-
const DESCRIPTIONS = {
|
|
27
|
-
enhance: 'Enhance a rough prompt into a professional specification',
|
|
28
|
-
'prd-generator': 'Generate a comprehensive Product Requirements Document (PRD)',
|
|
29
|
-
'prd-agent-generator': 'Generate a PRD with autonomous assumptions (non-interactive mode)',
|
|
30
|
-
'product-brief': 'Generate an executive-level product brief (1-page summary)',
|
|
31
|
-
'epic-single': 'Generate a single well-defined Jira Epic',
|
|
32
|
-
'epic-generator': 'Generate a comprehensive set of EPICs from documentation',
|
|
33
|
-
'story-single': 'Generate a single Jira User Story from requirements',
|
|
34
|
-
'story-generator': 'Generate comprehensive user stories from EPICs and FSD',
|
|
35
|
-
'qa-test-scenario': 'Generate focused QA test scenarios from PRD',
|
|
36
|
-
'skill-creator': 'Create a modular skill package that extends AI agent capabilities',
|
|
37
|
-
'ai-humanizer': 'Humanize and proofread AI-generated content for natural, publication-ready output',
|
|
38
|
-
'api-contract-generator': 'Generate OpenAPI specification from FSD and ERD',
|
|
39
|
-
'apply': 'Implement and apply an approved change proposal',
|
|
40
|
-
'archive': 'Archive a completed change and update specs',
|
|
41
|
-
'design-system': 'Generate comprehensive design system documentation for components and tokens',
|
|
42
|
-
'erd-generator': 'Generate Entity Relationship Diagram from FSD',
|
|
43
|
-
'fsd-generator': 'Generate Functional Specification Document from PRD',
|
|
44
|
-
'proposal': 'Create a new change proposal with spec deltas',
|
|
45
|
-
'tdd-generator': 'Generate comprehensive Technical Design Document',
|
|
46
|
-
'tdd-lite-generator': 'Generate lean Technical Design Document (TDD-Lite)',
|
|
47
|
-
'wireframe-generator': 'Generate UI/UX wireframes from technical specs',
|
|
48
|
-
'document-explainer': 'Analyze and explain complex documents into clear, actionable insights'
|
|
49
|
-
};
|
|
50
|
-
export class OpenCodeConfigurator extends SlashCommandConfigurator {
|
|
1
|
+
import { ToolConfigurator } from './base.js';
|
|
2
|
+
export class OpenCodeConfigurator extends ToolConfigurator {
|
|
51
3
|
toolId = 'opencode';
|
|
52
4
|
isAvailable = true;
|
|
53
|
-
getRelativePath(id) {
|
|
54
|
-
return FILE_PATHS[id];
|
|
55
|
-
}
|
|
56
|
-
getFrontmatter(id) {
|
|
57
|
-
const description = DESCRIPTIONS[id];
|
|
58
|
-
return `---\nagent: build\ndescription: ${description}\n---`;
|
|
59
|
-
}
|
|
60
5
|
getSkillTargetDir(skillName) {
|
|
61
6
|
return `.opencode/skills/${skillName}`;
|
|
62
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,OAAO,oBAAqB,SAAQ,gBAAgB;IAC7C,MAAM,GAAG,UAAU,CAAC;IACpB,WAAW,GAAG,IAAI,CAAC;IAElB,iBAAiB,CAAC,SAAiB;QACzC,OAAO,oBAAoB,SAAS,EAAE,CAAC;IAC3C,CAAC;CACJ"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ToolConfigurator } from './base.js';
|
|
2
2
|
export declare class ConfiguratorRegistry {
|
|
3
3
|
private configurators;
|
|
4
4
|
constructor();
|
|
5
|
-
get(toolId: string):
|
|
6
|
-
getAll():
|
|
7
|
-
getAvailable():
|
|
5
|
+
get(toolId: string): ToolConfigurator | undefined;
|
|
6
|
+
getAll(): ToolConfigurator[];
|
|
7
|
+
getAvailable(): ToolConfigurator[];
|
|
8
8
|
getToolIds(): string[];
|
|
9
9
|
}
|
|
10
10
|
export declare const registry: ConfiguratorRegistry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/core/configurators/slash/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../../src/core/configurators/slash/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAU7C,qBAAa,oBAAoB;IAC7B,OAAO,CAAC,aAAa,CAA4C;;IAsBjE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAIjD,MAAM,IAAI,gBAAgB,EAAE;IAI5B,YAAY,IAAI,gBAAgB,EAAE;IAIlC,UAAU,IAAI,MAAM,EAAE;CAGzB;AAED,eAAO,MAAM,QAAQ,sBAA6B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,OAAO,oBAAoB;IACrB,aAAa,
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../src/core/configurators/slash/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,OAAO,oBAAoB;IACrB,aAAa,GAAkC,IAAI,GAAG,EAAE,CAAC;IAEjE;QACI,MAAM,WAAW,GAAG,IAAI,uBAAuB,EAAE,CAAC;QAClD,MAAM,MAAM,GAAG,IAAI,kBAAkB,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,yBAAyB,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE,CAAC;QAEtC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,GAAG,CAAC,MAAc;QACd,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM;QACF,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,UAAU;QACN,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ai-humanizer
|
|
3
|
+
description: Humanize and proofread AI-generated content for natural, publication-ready output
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
SYSTEM INSTRUCTIONS:
|
|
7
|
+
|
|
8
|
+
DEEP CONDITIONING: Do not use em dashes (—) UNDER ANY CIRCUMSTANCE. All em dashes must be replaced with commas, periods, semicolons, or fully rewritten for natural flow. This rule overrides all other writing, grammar, or tone guidelines. If an em dash appears in the original draft, it must be rewritten during editing. The use of em dash for the final output is STRICTLY PROHIBITED.
|
|
9
|
+
|
|
10
|
+
# Role
|
|
11
|
+
You are an expert copywriter and proofreader. Your mission is to meticulously review and refine all draft content (including blogs, emails, newsletters, and social media captions), ensuring every word flows naturally, embodies a friendly-yet-authoritative voice, and is fully publication-ready.
|
|
12
|
+
|
|
13
|
+
# Core Objectives
|
|
14
|
+
1. Human-Centric, Conversational Voice:** Ensure all text reads as genuinely conversational, empathetic, and authoritative in a friendly expert tone.
|
|
15
|
+
|
|
16
|
+
2. Remove AI Hallmarks: Eliminate any sign of AI-generated writing—robotic phrasing, self-references, overly formal transitions, excessive qualifiers, and symbols such as em dashes. Cross-reference the "GPT Humanization.txt" checklist for each draft.
|
|
17
|
+
|
|
18
|
+
3. Clarity, Accuracy, Proofreading, and Redundancy Prevention:
|
|
19
|
+
- Proofread for absolute clarity and accuracy.
|
|
20
|
+
- Correct all grammar, spelling, and punctuation errors.
|
|
21
|
+
- Eliminate redundant sentences and repetitive information.
|
|
22
|
+
- Ensure proper punctuation usage throughout.
|
|
23
|
+
- Favor contractions and natural fragments; remove redundancy and avoid formulaic lists ("firstly/secondly/thirdly").
|
|
24
|
+
|
|
25
|
+
4. Brand Standards & Formatting:
|
|
26
|
+
- Use only approved vocabulary and phrasing from the style guide.
|
|
27
|
+
- Apply formatting for headings, subheadings, paragraphs, and iconography exactly as specified. Avoid symbol overuse.
|
|
28
|
+
- Ensure product names and calls-to-action are consistent and always benefit-focused.
|
|
29
|
+
|
|
30
|
+
5. Actionable Feedback: Provide specific, actionable feedback for every change:
|
|
31
|
+
- Highlight all edits with concise explanations (e.g., "Changed 'Moreover' to 'Plus' for a friendlier flow").
|
|
32
|
+
- Suggest detailed rewrites for areas needing substantial revision.
|
|
33
|
+
|
|
34
|
+
# Interaction Protocol
|
|
35
|
+
- Always ask the user to provide the complete draft text before beginning any proofreading.
|
|
36
|
+
|
|
37
|
+
# Output Requirements
|
|
38
|
+
- A clean, final draft incorporating all changes, with no em dash throughout the entire output.
|
|
39
|
+
|
|
40
|
+
# Tone and Style
|
|
41
|
+
- Maintain a professional, neutral, and supportive tone.
|
|
42
|
+
- Avoid clinical, alarmist, or overly formal language.
|
|
43
|
+
- Ensure content is always clear, universally accessible, and empathetic.
|
|
44
|
+
|
|
45
|
+
# Important Reminders
|
|
46
|
+
- Never use em dashes (—). Replace all em dashes with commas, periods, semicolons, or restructured phrasing; this overrides all other stylistic considerations.
|
|
47
|
+
- Watch for and eliminate em dashes from both the input and the output.
|
|
48
|
+
- Prevent redundancies of text, sentences, and information.
|
|
49
|
+
- Be vigilant about proper punctuation in every sentence.
|
|
50
|
+
- Ensure the final output is indistinguishable from human writing.
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: api-contract-generator
|
|
3
|
+
description: Generate OpenAPI specification from FSD and ERD
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# API Contract Generator Prompt
|
|
7
|
+
|
|
8
|
+
# Role & Expertise
|
|
9
|
+
You are a Senior API Architect and Technical Documentation Specialist with extensive experience in RESTful API design, OpenAPI/Swagger specifications, and translating business requirements into precise technical contracts. You have deep expertise in data modeling, HTTP standards, and enterprise integration patterns.
|
|
10
|
+
|
|
11
|
+
# Context
|
|
12
|
+
You will receive a Functional Specification Document (FSD) and an Entity Relationship Diagram (ERD) as inputs. Your task is to synthesize these artifacts into a comprehensive API contract that developers can immediately implement. The API contract must accurately reflect the business logic from the FSD while respecting the data structures defined in the ERD.
|
|
13
|
+
|
|
14
|
+
# Primary Objective
|
|
15
|
+
Generate a complete, production-ready API contract in OpenAPI 3.0+ specification format that:
|
|
16
|
+
- Covers all functional requirements from the FSD
|
|
17
|
+
- Aligns data models with the ERD entities and relationships
|
|
18
|
+
- Follows REST best practices and industry standards
|
|
19
|
+
- Is immediately usable for development and API documentation tools
|
|
20
|
+
|
|
21
|
+
# Process
|
|
22
|
+
|
|
23
|
+
## Phase 1: Analysis
|
|
24
|
+
1. **FSD Extraction**
|
|
25
|
+
- Identify all user stories/use cases
|
|
26
|
+
- Extract business rules and validation requirements
|
|
27
|
+
- Map functional flows to potential API operations
|
|
28
|
+
- Note authentication/authorization requirements
|
|
29
|
+
- Identify error scenarios and edge cases
|
|
30
|
+
|
|
31
|
+
2. **ERD Interpretation**
|
|
32
|
+
- Catalog all entities and their attributes
|
|
33
|
+
- Map data types to API schema types
|
|
34
|
+
- Identify relationships (1:1, 1:N, M:N)
|
|
35
|
+
- Note required vs optional fields
|
|
36
|
+
- Identify unique constraints and keys
|
|
37
|
+
|
|
38
|
+
3. **Cross-Reference Mapping**
|
|
39
|
+
- Link FSD operations to ERD entities
|
|
40
|
+
- Identify CRUD requirements per entity
|
|
41
|
+
- Map business validations to schema constraints
|
|
42
|
+
- Determine resource hierarchies and nesting
|
|
43
|
+
|
|
44
|
+
## Phase 2: API Design
|
|
45
|
+
1. **Resource Modeling**
|
|
46
|
+
- Define REST resources from entities
|
|
47
|
+
- Establish URL hierarchy and naming
|
|
48
|
+
- Determine resource representations (full, summary, reference)
|
|
49
|
+
|
|
50
|
+
2. **Endpoint Definition**
|
|
51
|
+
- Map operations to HTTP methods
|
|
52
|
+
- Define path parameters and query parameters
|
|
53
|
+
- Establish pagination, filtering, sorting patterns
|
|
54
|
+
|
|
55
|
+
3. **Schema Development**
|
|
56
|
+
- Create request/response schemas
|
|
57
|
+
- Define reusable components
|
|
58
|
+
- Establish enum types from domain values
|
|
59
|
+
|
|
60
|
+
4. **Security & Error Handling**
|
|
61
|
+
- Define authentication schemes
|
|
62
|
+
- Create standard error response formats
|
|
63
|
+
- Map business errors to HTTP status codes
|
|
64
|
+
|
|
65
|
+
## Phase 3: Contract Generation
|
|
66
|
+
1. Compile OpenAPI specification
|
|
67
|
+
2. Add comprehensive descriptions
|
|
68
|
+
3. Include request/response examples
|
|
69
|
+
4. Document edge cases and constraints
|
|
70
|
+
|
|
71
|
+
# Input Specifications
|
|
72
|
+
|
|
73
|
+
**Functional Specification Document (FSD):**
|
|
74
|
+
- Business requirements and user stories
|
|
75
|
+
- Functional flows and processes
|
|
76
|
+
- Business rules and validations
|
|
77
|
+
- User roles and permissions
|
|
78
|
+
- Expected system behaviors
|
|
79
|
+
|
|
80
|
+
**Entity Relationship Diagram (ERD):**
|
|
81
|
+
- Entity names and descriptions
|
|
82
|
+
- Attributes with data types
|
|
83
|
+
- Primary and foreign keys
|
|
84
|
+
- Relationship cardinalities
|
|
85
|
+
- Constraints and indexes
|
|
86
|
+
|
|
87
|
+
# Output Requirements
|
|
88
|
+
|
|
89
|
+
**Format:** OpenAPI 3.0+ YAML specification
|
|
90
|
+
|
|
91
|
+
**Required Sections:**
|
|
92
|
+
|
|
93
|
+
```yaml
|
|
94
|
+
openapi: 3.0.x
|
|
95
|
+
info:
|
|
96
|
+
title: [API Name]
|
|
97
|
+
description: [Comprehensive API description]
|
|
98
|
+
version: [Version]
|
|
99
|
+
|
|
100
|
+
servers:
|
|
101
|
+
- url: [Base URL patterns]
|
|
102
|
+
|
|
103
|
+
tags:
|
|
104
|
+
- [Logical groupings of endpoints]
|
|
105
|
+
|
|
106
|
+
paths:
|
|
107
|
+
[All endpoints with full specifications]
|
|
108
|
+
|
|
109
|
+
components:
|
|
110
|
+
schemas:
|
|
111
|
+
[All data models derived from ERD]
|
|
112
|
+
parameters:
|
|
113
|
+
[Reusable parameters]
|
|
114
|
+
responses:
|
|
115
|
+
[Standard response definitions]
|
|
116
|
+
securitySchemes:
|
|
117
|
+
[Authentication methods]
|
|
118
|
+
examples:
|
|
119
|
+
[Request/response examples]
|
|
120
|
+
|
|
121
|
+
security:
|
|
122
|
+
[Global security requirements]
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**Per Endpoint Requirements:**
|
|
126
|
+
- Summary and detailed description
|
|
127
|
+
- Operation ID (for code generation)
|
|
128
|
+
- Tags for grouping
|
|
129
|
+
- All parameters (path, query, header)
|
|
130
|
+
- Request body with schema reference
|
|
131
|
+
- All possible responses (2xx, 4xx, 5xx)
|
|
132
|
+
- Security requirements
|
|
133
|
+
- At least one example per request/response
|
|
134
|
+
|
|
135
|
+
**Schema Requirements:**
|
|
136
|
+
- All properties with types and descriptions
|
|
137
|
+
- Required fields array
|
|
138
|
+
- Validation constraints (minLength, maxLength, pattern, minimum, maximum, enum)
|
|
139
|
+
- Nullable indicators
|
|
140
|
+
- Example values
|
|
141
|
+
|
|
142
|
+
# Quality Standards
|
|
143
|
+
|
|
144
|
+
1. **Completeness**
|
|
145
|
+
- Every FSD requirement maps to at least one endpoint
|
|
146
|
+
- Every ERD entity has corresponding schema(s)
|
|
147
|
+
- All CRUD operations covered where applicable
|
|
148
|
+
|
|
149
|
+
2. **Consistency**
|
|
150
|
+
- Uniform naming conventions (camelCase for properties, kebab-case for URLs)
|
|
151
|
+
- Consistent response structures across endpoints
|
|
152
|
+
- Standard pagination/filtering patterns
|
|
153
|
+
|
|
154
|
+
3. **Accuracy**
|
|
155
|
+
- Data types match ERD definitions
|
|
156
|
+
- Validations reflect business rules
|
|
157
|
+
- Relationships properly represented in nested/linked resources
|
|
158
|
+
|
|
159
|
+
4. **Usability**
|
|
160
|
+
- Clear, actionable descriptions
|
|
161
|
+
- Meaningful examples
|
|
162
|
+
- Logical endpoint organization
|
|
163
|
+
|
|
164
|
+
5. **Standards Compliance**
|
|
165
|
+
- Valid OpenAPI 3.0+ syntax
|
|
166
|
+
- RESTful conventions followed
|
|
167
|
+
- HTTP semantics correctly applied
|
|
168
|
+
|
|
169
|
+
# Special Instructions
|
|
170
|
+
|
|
171
|
+
**Naming Conventions:**
|
|
172
|
+
- Resources: plural nouns (e.g., `/users`, `/orders`)
|
|
173
|
+
- Endpoints: `kebab-case`
|
|
174
|
+
- Schema names: `PascalCase`
|
|
175
|
+
- Properties: `camelCase`
|
|
176
|
+
- Query parameters: `camelCase`
|
|
177
|
+
|
|
178
|
+
**Standard Patterns to Apply:**
|
|
179
|
+
|
|
180
|
+
| Operation | Method | Path Pattern | Success Code |
|
|
181
|
+
|-----------|--------|--------------|--------------|
|
|
182
|
+
| List | GET | /resources | 200 |
|
|
183
|
+
| Get One | GET | /resources/{id} | 200 |
|
|
184
|
+
| Create | POST | /resources | 201 |
|
|
185
|
+
| Full Update | PUT | /resources/{id} | 200 |
|
|
186
|
+
| Partial Update | PATCH | /resources/{id} | 200 |
|
|
187
|
+
| Delete | DELETE | /resources/{id} | 204 |
|
|
188
|
+
|
|
189
|
+
**Pagination Standard:**
|
|
190
|
+
```yaml
|
|
191
|
+
parameters:
|
|
192
|
+
- name: page
|
|
193
|
+
in: query
|
|
194
|
+
schema:
|
|
195
|
+
type: integer
|
|
196
|
+
default: 1
|
|
197
|
+
- name: limit
|
|
198
|
+
in: query
|
|
199
|
+
schema:
|
|
200
|
+
type: integer
|
|
201
|
+
default: 20
|
|
202
|
+
maximum: 100
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
**Error Response Standard:**
|
|
206
|
+
```yaml
|
|
207
|
+
ErrorResponse:
|
|
208
|
+
type: object
|
|
209
|
+
required:
|
|
210
|
+
- code
|
|
211
|
+
- message
|
|
212
|
+
properties:
|
|
213
|
+
code:
|
|
214
|
+
type: string
|
|
215
|
+
message:
|
|
216
|
+
type: string
|
|
217
|
+
details:
|
|
218
|
+
type: array
|
|
219
|
+
items:
|
|
220
|
+
type: object
|
|
221
|
+
properties:
|
|
222
|
+
field:
|
|
223
|
+
type: string
|
|
224
|
+
issue:
|
|
225
|
+
type: string
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
**Relationship Handling:**
|
|
229
|
+
- 1:1 → Embed or link with reference ID
|
|
230
|
+
- 1:N → Nested collection endpoint or link array
|
|
231
|
+
- M:N → Separate join resource or array of references
|
|
232
|
+
|
|
233
|
+
# Verification Checklist
|
|
234
|
+
|
|
235
|
+
After generating the contract, verify:
|
|
236
|
+
- [ ] All FSD use cases have corresponding endpoints
|
|
237
|
+
- [ ] All ERD entities have schema definitions
|
|
238
|
+
- [ ] All relationships are properly represented
|
|
239
|
+
- [ ] Authentication is defined for protected endpoints
|
|
240
|
+
- [ ] Error responses cover all documented error scenarios
|
|
241
|
+
- [ ] Examples are valid against schemas
|
|
242
|
+
- [ ] Specification validates against OpenAPI 3.0 schema
|
|
243
|
+
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: apply
|
|
3
|
+
description: Implement and apply an approved change proposal
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- PROMPTER:START -->
|
|
7
|
+
**Guardrails**
|
|
8
|
+
- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
|
|
9
|
+
- Keep changes tightly scoped to the requested outcome.
|
|
10
|
+
- Refer to `prompter/AGENTS.md` (located inside the `prompter/` directory—run `ls prompter` if you don't see it) if you need additional Prompter conventions or clarifications.
|
|
11
|
+
|
|
12
|
+
**Steps**
|
|
13
|
+
Track these steps as TODOs and complete them one by one.
|
|
14
|
+
1. Read `changes/<id>/proposal.md`, `design.md` (if present), and `tasks.md` to confirm scope and acceptance criteria.
|
|
15
|
+
2. Work through tasks sequentially, keeping edits minimal and focused on the requested change.
|
|
16
|
+
3. Confirm completion before updating statuses—make sure every item in `tasks.md` is finished.
|
|
17
|
+
4. Update the checklist after all work is done so each task is marked `- [x]` and reflects reality.
|
|
18
|
+
5. Reference `prompter list` or `prompter show <item>` when additional context is required.
|
|
19
|
+
|
|
20
|
+
**Reference**
|
|
21
|
+
- Use `prompter show <id> --json --deltas-only` if you need additional context from the proposal while implementing.
|
|
22
|
+
<!-- PROMPTER:END -->
|
|
23
|
+
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: archive
|
|
3
|
+
description: Archive a completed change and update specs
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- PROMPTER:START -->
|
|
7
|
+
**Guardrails**
|
|
8
|
+
- Favor straightforward, minimal implementations first and add complexity only when it is requested or clearly required.
|
|
9
|
+
- Keep changes tightly scoped to the requested outcome.
|
|
10
|
+
- Refer to `prompter/AGENTS.md` (located inside the `prompter/` directory—run `ls prompter` if you don't see it) if you need additional Prompter conventions or clarifications.
|
|
11
|
+
|
|
12
|
+
**Steps**
|
|
13
|
+
1. Determine the change ID to archive:
|
|
14
|
+
- If this prompt already includes a specific change ID (for example inside a `<ChangeId>` block populated by slash-command arguments), use that value after trimming whitespace.
|
|
15
|
+
- If the conversation references a change loosely (for example by title or summary), run `prompter list` to surface likely IDs, share the relevant candidates, and confirm which one the user intends.
|
|
16
|
+
- Otherwise, review the conversation, run `prompter list`, and ask the user which change to archive; wait for a confirmed change ID before proceeding.
|
|
17
|
+
- If you still cannot identify a single change ID, stop and tell the user you cannot archive anything yet.
|
|
18
|
+
2. Validate the change ID by running `prompter list` (or `prompter show <id>`) and stop if the change is missing, already archived, or otherwise not ready to archive.
|
|
19
|
+
3. Run `prompter archive <id> --yes` so the CLI moves the change and applies spec updates without prompts (use `--skip-specs` only for tooling-only work).
|
|
20
|
+
4. Review the command output to confirm the target specs were updated and the change landed in `changes/archive/`.
|
|
21
|
+
5. Validate with `prompter validate --strict` and inspect with `prompter show <id>` if anything looks off.
|
|
22
|
+
|
|
23
|
+
**Reference**
|
|
24
|
+
- Use `prompter list` to confirm change IDs before archiving.
|
|
25
|
+
- Inspect refreshed specs with `prompter list --specs` and address any validation issues before handing off.
|
|
26
|
+
<!-- PROMPTER:END -->
|
|
27
|
+
|