@shahmarasy/prodo 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +157 -0
  3. package/bin/prodo.cjs +6 -0
  4. package/dist/agent-command-installer.d.ts +4 -0
  5. package/dist/agent-command-installer.js +158 -0
  6. package/dist/agents.d.ts +15 -0
  7. package/dist/agents.js +47 -0
  8. package/dist/artifact-registry.d.ts +11 -0
  9. package/dist/artifact-registry.js +49 -0
  10. package/dist/artifacts.d.ts +9 -0
  11. package/dist/artifacts.js +514 -0
  12. package/dist/cli.d.ts +9 -0
  13. package/dist/cli.js +305 -0
  14. package/dist/consistency.d.ts +8 -0
  15. package/dist/consistency.js +268 -0
  16. package/dist/constants.d.ts +7 -0
  17. package/dist/constants.js +64 -0
  18. package/dist/doctor.d.ts +1 -0
  19. package/dist/doctor.js +123 -0
  20. package/dist/errors.d.ts +3 -0
  21. package/dist/errors.js +10 -0
  22. package/dist/hook-executor.d.ts +1 -0
  23. package/dist/hook-executor.js +175 -0
  24. package/dist/init-tui.d.ts +21 -0
  25. package/dist/init-tui.js +161 -0
  26. package/dist/init.d.ts +10 -0
  27. package/dist/init.js +307 -0
  28. package/dist/markdown.d.ts +11 -0
  29. package/dist/markdown.js +66 -0
  30. package/dist/normalize.d.ts +7 -0
  31. package/dist/normalize.js +73 -0
  32. package/dist/normalized-brief.d.ts +39 -0
  33. package/dist/normalized-brief.js +170 -0
  34. package/dist/output-index.d.ts +13 -0
  35. package/dist/output-index.js +55 -0
  36. package/dist/paths.d.ts +16 -0
  37. package/dist/paths.js +76 -0
  38. package/dist/preset-loader.d.ts +4 -0
  39. package/dist/preset-loader.js +210 -0
  40. package/dist/project-config.d.ts +14 -0
  41. package/dist/project-config.js +69 -0
  42. package/dist/providers/index.d.ts +2 -0
  43. package/dist/providers/index.js +12 -0
  44. package/dist/providers/mock-provider.d.ts +7 -0
  45. package/dist/providers/mock-provider.js +168 -0
  46. package/dist/providers/openai-provider.d.ts +11 -0
  47. package/dist/providers/openai-provider.js +69 -0
  48. package/dist/registry.d.ts +13 -0
  49. package/dist/registry.js +115 -0
  50. package/dist/settings.d.ts +6 -0
  51. package/dist/settings.js +34 -0
  52. package/dist/template-resolver.d.ts +11 -0
  53. package/dist/template-resolver.js +28 -0
  54. package/dist/templates.d.ts +33 -0
  55. package/dist/templates.js +428 -0
  56. package/dist/types.d.ts +35 -0
  57. package/dist/types.js +5 -0
  58. package/dist/utils.d.ts +6 -0
  59. package/dist/utils.js +53 -0
  60. package/dist/validate.d.ts +9 -0
  61. package/dist/validate.js +226 -0
  62. package/dist/validator.d.ts +5 -0
  63. package/dist/validator.js +80 -0
  64. package/dist/version.d.ts +1 -0
  65. package/dist/version.js +30 -0
  66. package/dist/workflow-commands.d.ts +7 -0
  67. package/dist/workflow-commands.js +28 -0
  68. package/package.json +45 -0
  69. package/presets/fintech/preset.json +1 -0
  70. package/presets/fintech/prompts/prd.md +3 -0
  71. package/presets/marketplace/preset.json +1 -0
  72. package/presets/marketplace/prompts/prd.md +3 -0
  73. package/presets/saas/preset.json +1 -0
  74. package/presets/saas/prompts/prd.md +3 -0
  75. package/src/agent-command-installer.ts +174 -0
  76. package/src/agents.ts +56 -0
  77. package/src/artifact-registry.ts +69 -0
  78. package/src/artifacts.ts +606 -0
  79. package/src/cli.ts +322 -0
  80. package/src/consistency.ts +303 -0
  81. package/src/constants.ts +72 -0
  82. package/src/doctor.ts +137 -0
  83. package/src/errors.ts +7 -0
  84. package/src/hook-executor.ts +196 -0
  85. package/src/init-tui.ts +193 -0
  86. package/src/init.ts +375 -0
  87. package/src/markdown.ts +73 -0
  88. package/src/normalize.ts +89 -0
  89. package/src/normalized-brief.ts +206 -0
  90. package/src/output-index.ts +59 -0
  91. package/src/paths.ts +72 -0
  92. package/src/preset-loader.ts +237 -0
  93. package/src/project-config.ts +78 -0
  94. package/src/providers/index.ts +12 -0
  95. package/src/providers/mock-provider.ts +188 -0
  96. package/src/providers/openai-provider.ts +87 -0
  97. package/src/registry.ts +119 -0
  98. package/src/settings.ts +34 -0
  99. package/src/template-resolver.ts +33 -0
  100. package/src/templates.ts +440 -0
  101. package/src/types.ts +46 -0
  102. package/src/utils.ts +50 -0
  103. package/src/validate.ts +246 -0
  104. package/src/validator.ts +96 -0
  105. package/src/version.ts +24 -0
  106. package/src/workflow-commands.ts +31 -0
  107. package/templates/artifacts/prd.md +219 -0
  108. package/templates/artifacts/stories.md +49 -0
  109. package/templates/artifacts/techspec.md +42 -0
  110. package/templates/artifacts/wireframe.html +260 -0
  111. package/templates/artifacts/wireframe.md +22 -0
  112. package/templates/artifacts/workflow.md +22 -0
  113. package/templates/artifacts/workflow.mmd +6 -0
  114. package/templates/commands/prodo-normalize.md +24 -0
  115. package/templates/commands/prodo-prd.md +24 -0
  116. package/templates/commands/prodo-stories.md +24 -0
  117. package/templates/commands/prodo-techspec.md +24 -0
  118. package/templates/commands/prodo-validate.md +24 -0
  119. package/templates/commands/prodo-wireframe.md +24 -0
  120. package/templates/commands/prodo-workflow.md +24 -0
@@ -0,0 +1,260 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>{{Screen Title}} - Wireframe</title>
7
+ <style>
8
+ body {
9
+ margin: 0;
10
+ padding: 32px;
11
+ background: #f2f2f2;
12
+ font-family: "Courier New", Courier, monospace;
13
+ color: #000;
14
+ }
15
+
16
+ .wireframe-page {
17
+ max-width: 1100px;
18
+ margin: 0 auto 48px auto;
19
+ background: #fff;
20
+ border: 2px solid #000;
21
+ padding: 20px;
22
+ }
23
+
24
+ .wf-header {
25
+ display: flex;
26
+ justify-content: space-between;
27
+ align-items: center;
28
+ gap: 16px;
29
+ margin-bottom: 16px;
30
+ }
31
+
32
+ .wf-logo {
33
+ border: 2px solid #000;
34
+ padding: 8px 16px;
35
+ font-weight: bold;
36
+ background: #fff;
37
+ }
38
+
39
+ .wf-title {
40
+ font-size: 20px;
41
+ font-weight: bold;
42
+ text-transform: uppercase;
43
+ letter-spacing: 1px;
44
+ text-align: right;
45
+ flex: 1;
46
+ }
47
+
48
+ .wf-divider {
49
+ border-bottom: 1px solid #000;
50
+ margin: 16px 0 24px 0;
51
+ }
52
+
53
+ .wf-label {
54
+ font-size: 12px;
55
+ font-weight: bold;
56
+ text-transform: uppercase;
57
+ margin-bottom: 8px;
58
+ letter-spacing: 0.5px;
59
+ }
60
+
61
+ .wf-box {
62
+ border: 1px solid #000;
63
+ background: #fff;
64
+ padding: 12px;
65
+ }
66
+
67
+ .wf-muted-box {
68
+ border: 1px solid #000;
69
+ background: #e5e5e5;
70
+ padding: 12px;
71
+ }
72
+
73
+ .wf-dashed-box {
74
+ border: 2px dashed #000;
75
+ background: #fff;
76
+ padding: 20px;
77
+ min-height: 120px;
78
+ display: flex;
79
+ flex-direction: column;
80
+ justify-content: center;
81
+ align-items: center;
82
+ text-align: center;
83
+ }
84
+
85
+ .wf-button {
86
+ display: inline-block;
87
+ border: 2px solid #000;
88
+ background: #fff;
89
+ padding: 10px 16px;
90
+ font-weight: bold;
91
+ text-align: center;
92
+ text-transform: uppercase;
93
+ cursor: default;
94
+ }
95
+
96
+ .wf-button.full {
97
+ width: 100%;
98
+ box-sizing: border-box;
99
+ }
100
+
101
+ .wf-input {
102
+ width: 100%;
103
+ height: 38px;
104
+ border: 1px solid #000;
105
+ background: #fff;
106
+ margin-top: 6px;
107
+ box-sizing: border-box;
108
+ }
109
+
110
+ .wf-textarea {
111
+ width: 100%;
112
+ height: 110px;
113
+ border: 1px solid #000;
114
+ background: #fff;
115
+ margin-top: 6px;
116
+ box-sizing: border-box;
117
+ }
118
+
119
+ .wf-checkbox-row {
120
+ display: flex;
121
+ align-items: flex-start;
122
+ gap: 10px;
123
+ }
124
+
125
+ .wf-checkbox {
126
+ width: 18px;
127
+ height: 18px;
128
+ border: 1px solid #000;
129
+ background: #fff;
130
+ flex-shrink: 0;
131
+ margin-top: 2px;
132
+ }
133
+
134
+ .wf-grid-2 {
135
+ display: grid;
136
+ grid-template-columns: 1fr 1fr;
137
+ gap: 12px;
138
+ }
139
+
140
+ .wf-grid-3 {
141
+ display: grid;
142
+ grid-template-columns: 1fr 1fr 1fr;
143
+ gap: 12px;
144
+ }
145
+
146
+ .wf-layout-3 {
147
+ display: grid;
148
+ grid-template-columns: 1fr 2fr 1fr;
149
+ gap: 16px;
150
+ }
151
+
152
+ .wf-stack > * + * {
153
+ margin-top: 16px;
154
+ }
155
+
156
+ .wf-list > * + * {
157
+ margin-top: 8px;
158
+ }
159
+
160
+ .wf-small {
161
+ font-size: 12px;
162
+ }
163
+
164
+ .wf-xs {
165
+ font-size: 11px;
166
+ }
167
+
168
+ .wf-center {
169
+ text-align: center;
170
+ }
171
+
172
+ @media (max-width: 900px) {
173
+ .wf-layout-3,
174
+ .wf-grid-2,
175
+ .wf-grid-3 {
176
+ grid-template-columns: 1fr;
177
+ }
178
+
179
+ .wf-header {
180
+ flex-direction: column;
181
+ align-items: stretch;
182
+ }
183
+
184
+ .wf-title {
185
+ text-align: left;
186
+ }
187
+ }
188
+ </style>
189
+ </head>
190
+ <body>
191
+ <div class="wireframe-page">
192
+ <div class="wf-header">
193
+ <div class="wf-logo">[ LOGO ]</div>
194
+ <div class="wf-title">{{Screen Title}}</div>
195
+ </div>
196
+
197
+ <div class="wf-divider"></div>
198
+
199
+ <div class="wf-stack">
200
+ <section>
201
+ <div class="wf-label">Summary / Context</div>
202
+ <div class="wf-muted-box">
203
+ <div class="wf-grid-2 wf-small">
204
+ <div>
205
+ <strong>{{Meta Label 1}}:</strong> {{Meta Value
206
+ 1}}
207
+ </div>
208
+ <div>
209
+ <strong>{{Meta Label 2}}:</strong> {{Meta Value
210
+ 2}}
211
+ </div>
212
+ </div>
213
+ <div class="wf-small" style="margin-top: 10px">
214
+ <strong>{{Description Label}}:</strong>
215
+ {{Description Placeholder}}
216
+ </div>
217
+ </div>
218
+ </section>
219
+
220
+ <section>
221
+ <div class="wf-label">{{Primary Form / Content Title}}</div>
222
+ <div class="wf-box">
223
+ <label class="wf-label">{{Field Label}}</label>
224
+ <div class="wf-input"></div>
225
+ </div>
226
+ </section>
227
+
228
+ <section>
229
+ <div class="wf-label">{{Detailed Input Area}}</div>
230
+ <div class="wf-box">
231
+ <div class="wf-textarea"></div>
232
+ </div>
233
+ </section>
234
+
235
+ <section>
236
+ <div class="wf-label">{{Upload / Attachment Area}}</div>
237
+ <div class="wf-dashed-box">
238
+ <div>[ DRAG & DROP AREA ]</div>
239
+ <div class="wf-xs" style="margin-top: 8px">
240
+ {{Allowed file types / notes}}
241
+ </div>
242
+ </div>
243
+ </section>
244
+
245
+ <section>
246
+ <div class="wf-checkbox-row">
247
+ <div class="wf-checkbox"></div>
248
+ <div class="wf-small">
249
+ {{Consent / confirmation text}}
250
+ </div>
251
+ </div>
252
+ </section>
253
+
254
+ <section class="wf-center">
255
+ <div class="wf-button">{{Primary Action}}</div>
256
+ </section>
257
+ </div>
258
+ </div>
259
+ </body>
260
+ </html>
@@ -0,0 +1,22 @@
1
+ # Wireframe Template
2
+
3
+ ## Screen Purpose
4
+ - What this screen enables and why it exists.
5
+
6
+ ## Primary Actor
7
+ - Main user type for this screen.
8
+
9
+ ## Main Sections
10
+ - Section names and intent.
11
+
12
+ ## Fields/Inputs
13
+ - Inputs and expected values.
14
+
15
+ ## Actions/Buttons
16
+ - Primary and secondary actions.
17
+
18
+ ## States/Messages
19
+ - Empty, loading, error, success states.
20
+
21
+ ## Notes
22
+ - Constraints or UX notes.
@@ -0,0 +1,22 @@
1
+ # Workflow Template
2
+
3
+ ## Flow Purpose
4
+ - Explain the objective and expected outcome.
5
+
6
+ ## Actors
7
+ - Primary actor
8
+ - Supporting actor(s)
9
+
10
+ ## Preconditions
11
+ - Required state before the flow starts.
12
+
13
+ ## Main Flow
14
+ 1. Trigger
15
+ 2. System processing
16
+ 3. User-visible result
17
+
18
+ ## Edge Cases
19
+ - Failure branch and recovery path
20
+
21
+ ## Postconditions
22
+ - End state after completion
@@ -0,0 +1,6 @@
1
+ flowchart TD
2
+ A[Baslangic] --> B[[F1] Kullanici islemi]
3
+ B --> C[Sistem islemi]
4
+ C --> D[Basari]
5
+ C --> E[Hata]
6
+
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Normalize product brief.
3
+ run:
4
+ action: normalize
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`).
22
+ 2. Execute normalization process with provided arguments.
23
+ 3. Confirm `.prodo/briefs/normalized-brief.json` exists.
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Generate PRD artifact.
3
+ run:
4
+ action: prd
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute PRD generation process with provided arguments.
23
+ 3. Confirm PRD output was created.
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Generate user stories artifact.
3
+ run:
4
+ action: stories
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute stories generation process with provided arguments.
23
+ 3. Confirm stories output was created.
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Generate technical specification artifact.
3
+ run:
4
+ action: techspec
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute techspec generation process with provided arguments.
23
+ 3. Confirm techspec output was created.
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Validate artifact set.
3
+ run:
4
+ action: validate
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute validation process with provided arguments.
23
+ 3. Confirm validation report exists and status is clear.
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Generate wireframe artifacts.
3
+ run:
4
+ action: wireframe
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute wireframe generation process with provided arguments.
23
+ 3. Confirm paired outputs exist (`.md` + `.html`).
24
+ 4. Diagnose internals only if command fails.
@@ -0,0 +1,24 @@
1
+ ---
2
+ description: Generate workflow artifacts.
3
+ run:
4
+ action: workflow
5
+ mode: internal-runtime
6
+ ---
7
+
8
+ ## User Input
9
+
10
+ ```text
11
+ $ARGUMENTS
12
+ ```
13
+
14
+ Execution policy:
15
+ - Execute-first, diagnose-second.
16
+ - Use Prodo internal runtime process; do not invoke CLI or shell scripts.
17
+ - Input files are read-only; never modify or rewrite `brief.md`.
18
+
19
+ ## Execution
20
+
21
+ 1. Verify minimal prerequisites (`.prodo/`, `brief.md`, normalized brief).
22
+ 2. Execute workflow generation process with provided arguments.
23
+ 3. Confirm paired outputs exist (`.md` + `.mmd`).
24
+ 4. Diagnose internals only if command fails.