create-dss-project 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.
- package/bin/create-dss-project.js +4 -0
- package/lib/index.js +80 -0
- package/lib/project-types.js +74 -0
- package/lib/prompts.js +42 -0
- package/lib/scaffold.js +169 -0
- package/package.json +30 -0
- package/template/.github/workflows/dashboard-build.yml +27 -0
- package/template/.github/workflows/template-lint.yml +71 -0
- package/template/CHANGELOG.md +43 -0
- package/template/CLAUDE.md +145 -0
- package/template/LICENSE +21 -0
- package/template/README.md +201 -0
- package/template/STATUS.md +34 -0
- package/template/context/competitor-snapshot.md +27 -0
- package/template/context/market-snapshot.md +32 -0
- package/template/context/pipeline-state.md +36 -0
- package/template/context/project-state.md +45 -0
- package/template/dashboard/CLAUDE.md +36 -0
- package/template/dashboard/DEPLOY.md +60 -0
- package/template/dashboard/build-data.js +395 -0
- package/template/dashboard/competitors.html +143 -0
- package/template/dashboard/css/styles.css +143 -0
- package/template/dashboard/data/.gitkeep +0 -0
- package/template/dashboard/decisions.html +132 -0
- package/template/dashboard/index.html +152 -0
- package/template/dashboard/js/app.js +59 -0
- package/template/dashboard/js/overview.js +50 -0
- package/template/dashboard/js/sidebar.js +62 -0
- package/template/dashboard/js/tailwind-config.js +52 -0
- package/template/dashboard/package-lock.json +351 -0
- package/template/dashboard/package.json +17 -0
- package/template/dashboard/pipeline.html +149 -0
- package/template/dashboard/research.html +215 -0
- package/template/dashboard/robots.txt +2 -0
- package/template/dashboard/scoring.html +187 -0
- package/template/dashboard/timeline.html +165 -0
- package/template/dashboard/vercel.json +5 -0
- package/template/dashboard/watch.js +57 -0
- package/template/data/.gitkeep +0 -0
- package/template/discovery/calls/.gitkeep +0 -0
- package/template/discovery/outreach/.gitkeep +0 -0
- package/template/discovery/prep/.gitkeep +0 -0
- package/template/docs/decks/.gitkeep +0 -0
- package/template/docs/executive-summary.md +104 -0
- package/template/docs/getting-started.md +274 -0
- package/template/docs/memos/evidence-grading.md +27 -0
- package/template/docs/memos/housekeeping-reference.md +101 -0
- package/template/docs/memos/reference-context.md +30 -0
- package/template/docs/output/project-activity.md +8 -0
- package/template/docs/output/status-blurb.md +4 -0
- package/template/docs/output/work-log.md +8 -0
- package/template/docs/skill-authoring-guide.md +212 -0
- package/template/memory/MEMORY.md +84 -0
- package/template/memory/decisions.md +13 -0
- package/template/memory/discovery.md +48 -0
- package/template/memory/research.md +33 -0
- package/template/memory/scoring.md +34 -0
- package/template/project.config.example.json +31 -0
- package/template/research/competitors/.gitkeep +0 -0
- package/template/research/market/.gitkeep +0 -0
- package/template/research/technical/.gitkeep +0 -0
- package/template/scripts/.gitkeep +0 -0
- package/template/scripts/build-cli-template.sh +32 -0
- package/template/scripts/health-check.sh +152 -0
- package/template/scripts/reset-to-template.sh +115 -0
- package/template/scripts/validate-placeholders.sh +47 -0
- package/template/skills/compare-options/SKILL.md +97 -0
- package/template/skills/critical-reasoning/SKILL.md +107 -0
- package/template/skills/decision/SKILL.md +75 -0
- package/template/skills/enrich-entity/SKILL.md +107 -0
- package/template/skills/health-check/SKILL.md +144 -0
- package/template/skills/onboard/SKILL.md +434 -0
- package/template/skills/outreach-sequence/SKILL.md +79 -0
- package/template/skills/pipeline-update/SKILL.md +90 -0
- package/template/skills/process-call/SKILL.md +96 -0
- package/template/skills/rebuild-snapshots/SKILL.md +88 -0
- package/template/skills/session-end/SKILL.md +120 -0
- package/template/skills/session-start/SKILL.md +93 -0
- package/template/skills/synthesise/SKILL.md +108 -0
- package/template/skills/weekly-report/SKILL.md +79 -0
- package/template/templates/call-notes.md +67 -0
- package/template/templates/call-prep.md +65 -0
- package/template/templates/entity-teardown.md +58 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "strategy-project-dashboard",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"lockfileVersion": 3,
|
|
5
|
+
"requires": true,
|
|
6
|
+
"packages": {
|
|
7
|
+
"": {
|
|
8
|
+
"name": "strategy-project-dashboard",
|
|
9
|
+
"version": "1.0.0",
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"csv-parse": "^5.5.0",
|
|
12
|
+
"marked": "^12.0.0"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"concurrently": "^9.2.1"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"node_modules/ansi-regex": {
|
|
19
|
+
"version": "5.0.1",
|
|
20
|
+
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
|
|
21
|
+
"integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
|
|
22
|
+
"dev": true,
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=8"
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"node_modules/ansi-styles": {
|
|
29
|
+
"version": "4.3.0",
|
|
30
|
+
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
|
|
31
|
+
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
|
|
32
|
+
"dev": true,
|
|
33
|
+
"license": "MIT",
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"color-convert": "^2.0.1"
|
|
36
|
+
},
|
|
37
|
+
"engines": {
|
|
38
|
+
"node": ">=8"
|
|
39
|
+
},
|
|
40
|
+
"funding": {
|
|
41
|
+
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"node_modules/chalk": {
|
|
45
|
+
"version": "4.1.2",
|
|
46
|
+
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
|
|
47
|
+
"integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
|
|
48
|
+
"dev": true,
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"ansi-styles": "^4.1.0",
|
|
52
|
+
"supports-color": "^7.1.0"
|
|
53
|
+
},
|
|
54
|
+
"engines": {
|
|
55
|
+
"node": ">=10"
|
|
56
|
+
},
|
|
57
|
+
"funding": {
|
|
58
|
+
"url": "https://github.com/chalk/chalk?sponsor=1"
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"node_modules/chalk/node_modules/supports-color": {
|
|
62
|
+
"version": "7.2.0",
|
|
63
|
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
|
|
64
|
+
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
|
|
65
|
+
"dev": true,
|
|
66
|
+
"license": "MIT",
|
|
67
|
+
"dependencies": {
|
|
68
|
+
"has-flag": "^4.0.0"
|
|
69
|
+
},
|
|
70
|
+
"engines": {
|
|
71
|
+
"node": ">=8"
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"node_modules/cliui": {
|
|
75
|
+
"version": "8.0.1",
|
|
76
|
+
"resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
|
|
77
|
+
"integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
|
|
78
|
+
"dev": true,
|
|
79
|
+
"license": "ISC",
|
|
80
|
+
"dependencies": {
|
|
81
|
+
"string-width": "^4.2.0",
|
|
82
|
+
"strip-ansi": "^6.0.1",
|
|
83
|
+
"wrap-ansi": "^7.0.0"
|
|
84
|
+
},
|
|
85
|
+
"engines": {
|
|
86
|
+
"node": ">=12"
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
"node_modules/color-convert": {
|
|
90
|
+
"version": "2.0.1",
|
|
91
|
+
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
|
|
92
|
+
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
|
|
93
|
+
"dev": true,
|
|
94
|
+
"license": "MIT",
|
|
95
|
+
"dependencies": {
|
|
96
|
+
"color-name": "~1.1.4"
|
|
97
|
+
},
|
|
98
|
+
"engines": {
|
|
99
|
+
"node": ">=7.0.0"
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
"node_modules/color-name": {
|
|
103
|
+
"version": "1.1.4",
|
|
104
|
+
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
|
|
105
|
+
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
|
|
106
|
+
"dev": true,
|
|
107
|
+
"license": "MIT"
|
|
108
|
+
},
|
|
109
|
+
"node_modules/concurrently": {
|
|
110
|
+
"version": "9.2.1",
|
|
111
|
+
"resolved": "https://registry.npmjs.org/concurrently/-/concurrently-9.2.1.tgz",
|
|
112
|
+
"integrity": "sha512-fsfrO0MxV64Znoy8/l1vVIjjHa29SZyyqPgQBwhiDcaW8wJc2W3XWVOGx4M3oJBnv/zdUZIIp1gDeS98GzP8Ng==",
|
|
113
|
+
"dev": true,
|
|
114
|
+
"license": "MIT",
|
|
115
|
+
"dependencies": {
|
|
116
|
+
"chalk": "4.1.2",
|
|
117
|
+
"rxjs": "7.8.2",
|
|
118
|
+
"shell-quote": "1.8.3",
|
|
119
|
+
"supports-color": "8.1.1",
|
|
120
|
+
"tree-kill": "1.2.2",
|
|
121
|
+
"yargs": "17.7.2"
|
|
122
|
+
},
|
|
123
|
+
"bin": {
|
|
124
|
+
"conc": "dist/bin/concurrently.js",
|
|
125
|
+
"concurrently": "dist/bin/concurrently.js"
|
|
126
|
+
},
|
|
127
|
+
"engines": {
|
|
128
|
+
"node": ">=18"
|
|
129
|
+
},
|
|
130
|
+
"funding": {
|
|
131
|
+
"url": "https://github.com/open-cli-tools/concurrently?sponsor=1"
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"node_modules/csv-parse": {
|
|
135
|
+
"version": "5.6.0",
|
|
136
|
+
"resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-5.6.0.tgz",
|
|
137
|
+
"integrity": "sha512-l3nz3euub2QMg5ouu5U09Ew9Wf6/wQ8I++ch1loQ0ljmzhmfZYrH9fflS22i/PQEvsPvxCwxgz5q7UB8K1JO4Q==",
|
|
138
|
+
"license": "MIT"
|
|
139
|
+
},
|
|
140
|
+
"node_modules/emoji-regex": {
|
|
141
|
+
"version": "8.0.0",
|
|
142
|
+
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
|
|
143
|
+
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
|
|
144
|
+
"dev": true,
|
|
145
|
+
"license": "MIT"
|
|
146
|
+
},
|
|
147
|
+
"node_modules/escalade": {
|
|
148
|
+
"version": "3.2.0",
|
|
149
|
+
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
|
150
|
+
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
|
151
|
+
"dev": true,
|
|
152
|
+
"license": "MIT",
|
|
153
|
+
"engines": {
|
|
154
|
+
"node": ">=6"
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
"node_modules/get-caller-file": {
|
|
158
|
+
"version": "2.0.5",
|
|
159
|
+
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
|
|
160
|
+
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
|
|
161
|
+
"dev": true,
|
|
162
|
+
"license": "ISC",
|
|
163
|
+
"engines": {
|
|
164
|
+
"node": "6.* || 8.* || >= 10.*"
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
"node_modules/has-flag": {
|
|
168
|
+
"version": "4.0.0",
|
|
169
|
+
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
|
|
170
|
+
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
|
|
171
|
+
"dev": true,
|
|
172
|
+
"license": "MIT",
|
|
173
|
+
"engines": {
|
|
174
|
+
"node": ">=8"
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
"node_modules/is-fullwidth-code-point": {
|
|
178
|
+
"version": "3.0.0",
|
|
179
|
+
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
|
|
180
|
+
"integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
|
|
181
|
+
"dev": true,
|
|
182
|
+
"license": "MIT",
|
|
183
|
+
"engines": {
|
|
184
|
+
"node": ">=8"
|
|
185
|
+
}
|
|
186
|
+
},
|
|
187
|
+
"node_modules/marked": {
|
|
188
|
+
"version": "12.0.2",
|
|
189
|
+
"resolved": "https://registry.npmjs.org/marked/-/marked-12.0.2.tgz",
|
|
190
|
+
"integrity": "sha512-qXUm7e/YKFoqFPYPa3Ukg9xlI5cyAtGmyEIzMfW//m6kXwCy2Ps9DYf5ioijFKQ8qyuscrHoY04iJGctu2Kg0Q==",
|
|
191
|
+
"license": "MIT",
|
|
192
|
+
"bin": {
|
|
193
|
+
"marked": "bin/marked.js"
|
|
194
|
+
},
|
|
195
|
+
"engines": {
|
|
196
|
+
"node": ">= 18"
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
"node_modules/require-directory": {
|
|
200
|
+
"version": "2.1.1",
|
|
201
|
+
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
|
|
202
|
+
"integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
|
|
203
|
+
"dev": true,
|
|
204
|
+
"license": "MIT",
|
|
205
|
+
"engines": {
|
|
206
|
+
"node": ">=0.10.0"
|
|
207
|
+
}
|
|
208
|
+
},
|
|
209
|
+
"node_modules/rxjs": {
|
|
210
|
+
"version": "7.8.2",
|
|
211
|
+
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz",
|
|
212
|
+
"integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==",
|
|
213
|
+
"dev": true,
|
|
214
|
+
"license": "Apache-2.0",
|
|
215
|
+
"dependencies": {
|
|
216
|
+
"tslib": "^2.1.0"
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
"node_modules/shell-quote": {
|
|
220
|
+
"version": "1.8.3",
|
|
221
|
+
"resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
|
|
222
|
+
"integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
|
|
223
|
+
"dev": true,
|
|
224
|
+
"license": "MIT",
|
|
225
|
+
"engines": {
|
|
226
|
+
"node": ">= 0.4"
|
|
227
|
+
},
|
|
228
|
+
"funding": {
|
|
229
|
+
"url": "https://github.com/sponsors/ljharb"
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
"node_modules/string-width": {
|
|
233
|
+
"version": "4.2.3",
|
|
234
|
+
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
|
|
235
|
+
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
|
|
236
|
+
"dev": true,
|
|
237
|
+
"license": "MIT",
|
|
238
|
+
"dependencies": {
|
|
239
|
+
"emoji-regex": "^8.0.0",
|
|
240
|
+
"is-fullwidth-code-point": "^3.0.0",
|
|
241
|
+
"strip-ansi": "^6.0.1"
|
|
242
|
+
},
|
|
243
|
+
"engines": {
|
|
244
|
+
"node": ">=8"
|
|
245
|
+
}
|
|
246
|
+
},
|
|
247
|
+
"node_modules/strip-ansi": {
|
|
248
|
+
"version": "6.0.1",
|
|
249
|
+
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
|
|
250
|
+
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
|
|
251
|
+
"dev": true,
|
|
252
|
+
"license": "MIT",
|
|
253
|
+
"dependencies": {
|
|
254
|
+
"ansi-regex": "^5.0.1"
|
|
255
|
+
},
|
|
256
|
+
"engines": {
|
|
257
|
+
"node": ">=8"
|
|
258
|
+
}
|
|
259
|
+
},
|
|
260
|
+
"node_modules/supports-color": {
|
|
261
|
+
"version": "8.1.1",
|
|
262
|
+
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
|
|
263
|
+
"integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
|
|
264
|
+
"dev": true,
|
|
265
|
+
"license": "MIT",
|
|
266
|
+
"dependencies": {
|
|
267
|
+
"has-flag": "^4.0.0"
|
|
268
|
+
},
|
|
269
|
+
"engines": {
|
|
270
|
+
"node": ">=10"
|
|
271
|
+
},
|
|
272
|
+
"funding": {
|
|
273
|
+
"url": "https://github.com/chalk/supports-color?sponsor=1"
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
"node_modules/tree-kill": {
|
|
277
|
+
"version": "1.2.2",
|
|
278
|
+
"resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz",
|
|
279
|
+
"integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==",
|
|
280
|
+
"dev": true,
|
|
281
|
+
"license": "MIT",
|
|
282
|
+
"bin": {
|
|
283
|
+
"tree-kill": "cli.js"
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
"node_modules/tslib": {
|
|
287
|
+
"version": "2.8.1",
|
|
288
|
+
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
|
289
|
+
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
|
290
|
+
"dev": true,
|
|
291
|
+
"license": "0BSD"
|
|
292
|
+
},
|
|
293
|
+
"node_modules/wrap-ansi": {
|
|
294
|
+
"version": "7.0.0",
|
|
295
|
+
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
|
|
296
|
+
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
|
|
297
|
+
"dev": true,
|
|
298
|
+
"license": "MIT",
|
|
299
|
+
"dependencies": {
|
|
300
|
+
"ansi-styles": "^4.0.0",
|
|
301
|
+
"string-width": "^4.1.0",
|
|
302
|
+
"strip-ansi": "^6.0.0"
|
|
303
|
+
},
|
|
304
|
+
"engines": {
|
|
305
|
+
"node": ">=10"
|
|
306
|
+
},
|
|
307
|
+
"funding": {
|
|
308
|
+
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
|
|
309
|
+
}
|
|
310
|
+
},
|
|
311
|
+
"node_modules/y18n": {
|
|
312
|
+
"version": "5.0.8",
|
|
313
|
+
"resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
|
|
314
|
+
"integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
|
|
315
|
+
"dev": true,
|
|
316
|
+
"license": "ISC",
|
|
317
|
+
"engines": {
|
|
318
|
+
"node": ">=10"
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
"node_modules/yargs": {
|
|
322
|
+
"version": "17.7.2",
|
|
323
|
+
"resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
|
|
324
|
+
"integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
|
|
325
|
+
"dev": true,
|
|
326
|
+
"license": "MIT",
|
|
327
|
+
"dependencies": {
|
|
328
|
+
"cliui": "^8.0.1",
|
|
329
|
+
"escalade": "^3.1.1",
|
|
330
|
+
"get-caller-file": "^2.0.5",
|
|
331
|
+
"require-directory": "^2.1.1",
|
|
332
|
+
"string-width": "^4.2.3",
|
|
333
|
+
"y18n": "^5.0.5",
|
|
334
|
+
"yargs-parser": "^21.1.1"
|
|
335
|
+
},
|
|
336
|
+
"engines": {
|
|
337
|
+
"node": ">=12"
|
|
338
|
+
}
|
|
339
|
+
},
|
|
340
|
+
"node_modules/yargs-parser": {
|
|
341
|
+
"version": "21.1.1",
|
|
342
|
+
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
|
|
343
|
+
"integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
|
|
344
|
+
"dev": true,
|
|
345
|
+
"license": "ISC",
|
|
346
|
+
"engines": {
|
|
347
|
+
"node": ">=12"
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "strategy-project-dashboard",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"scripts": {
|
|
6
|
+
"build": "node build-data.js",
|
|
7
|
+
"start": "node build-data.js && npx serve . -l 4000",
|
|
8
|
+
"dev": "node build-data.js && concurrently \"npx serve . -l 4000\" \"node watch.js\""
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"csv-parse": "^5.5.0",
|
|
12
|
+
"marked": "^12.0.0"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"concurrently": "^9.2.1"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="robots" content="noindex, nofollow">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<meta name="generator" content="DS Strategy Stack by DiffTheEnder (github.com/DiffTheEnder/DSS-Claude-Stack)">
|
|
8
|
+
<title>Pipeline — {{PROJECT_NAME}}</title>
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
+
<link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Instrument+Serif&family=Syne:wght@600;700&display=swap" rel="stylesheet">
|
|
12
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
13
|
+
<script>
|
|
14
|
+
tailwind.config = {
|
|
15
|
+
darkMode: 'class',
|
|
16
|
+
theme: { extend: {
|
|
17
|
+
colors: {
|
|
18
|
+
cream: { 50:"#F7F4EF",100:"#f5f2ed",200:"#efe9e0",300:"#e8e0d4",400:"#E3DDD4",white:"#FEFCF9" },
|
|
19
|
+
warmgray: { 100:"#f0ebe3",300:"#d4c8b8",400:"#9B9183",500:"#7D7265",600:"#5C5044",700:"#4a3c2e",900:"#2C2418" },
|
|
20
|
+
warmdark: { 950:"#1A1612",900:"#242018",800:"#2C2720",700:"#3A3530",600:"#4a3f32" },
|
|
21
|
+
accent: { 50:"#F2F7F5",100:"#E3EEEA",200:"#C5D9D4",400:"#2DB892",500:"#0E9C82",600:"#0E7C6B",700:"#0B6358",800:"#084C44",900:"#053B35" },
|
|
22
|
+
},
|
|
23
|
+
fontFamily: { sans:['DM Sans','system-ui','sans-serif'], serif:['Instrument Serif','Georgia','serif'], syne:['Syne','sans-serif'] }
|
|
24
|
+
}}
|
|
25
|
+
}
|
|
26
|
+
</script>
|
|
27
|
+
<link rel="stylesheet" href="css/styles.css">
|
|
28
|
+
</head>
|
|
29
|
+
<body class="bg-cream-50 dark:bg-warmdark-950 text-warmgray-900 dark:text-warmgray-100 min-h-screen flex">
|
|
30
|
+
|
|
31
|
+
<!-- Sidebar (same as index.html) -->
|
|
32
|
+
<aside id="sidebar" class="sidebar flex flex-col shrink-0">
|
|
33
|
+
<a href="index.html" class="sidebar-brand" style="text-decoration:none;color:inherit">
|
|
34
|
+
<svg width="32" height="32" viewBox="0 0 32 32" fill="none">
|
|
35
|
+
<rect x="2" y="2" width="28" height="28" rx="8" stroke="rgba(255,255,255,0.15)" stroke-width="1.5"/>
|
|
36
|
+
<circle cx="16" cy="16" r="3" stroke="#2DB892" stroke-width="1.5"/>
|
|
37
|
+
<line x1="16" y1="6" x2="16" y2="12" stroke="#2DB892" stroke-width="1.5" stroke-linecap="round"/>
|
|
38
|
+
<line x1="16" y1="20" x2="16" y2="26" stroke="#2DB892" stroke-width="1.5" stroke-linecap="round"/>
|
|
39
|
+
<line x1="6" y1="16" x2="12" y2="16" stroke="#2DB892" stroke-width="1.5" stroke-linecap="round"/>
|
|
40
|
+
<line x1="20" y1="16" x2="26" y2="16" stroke="#2DB892" stroke-width="1.5" stroke-linecap="round"/>
|
|
41
|
+
</svg>
|
|
42
|
+
<div>
|
|
43
|
+
<div class="sidebar-title">{{PROJECT_NAME}}</div>
|
|
44
|
+
<div class="sidebar-subtitle">Strategy Dashboard</div>
|
|
45
|
+
</div>
|
|
46
|
+
</a>
|
|
47
|
+
<nav class="sidebar-nav">
|
|
48
|
+
<div class="sidebar-label">Core</div>
|
|
49
|
+
<a href="index.html" class="nav-link">
|
|
50
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><circle cx="8" cy="8" r="6"/><path d="M8 5v3l2 2"/></svg>
|
|
51
|
+
Overview
|
|
52
|
+
</a>
|
|
53
|
+
<a href="pipeline.html" class="nav-link">
|
|
54
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M2 4h12M2 8h8M2 12h5"/></svg>
|
|
55
|
+
Pipeline
|
|
56
|
+
</a>
|
|
57
|
+
<a href="competitors.html" class="nav-link">
|
|
58
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><rect x="2" y="2" width="5" height="5" rx="1"/><rect x="9" y="2" width="5" height="5" rx="1"/><rect x="2" y="9" width="5" height="5" rx="1"/><rect x="9" y="9" width="5" height="5" rx="1"/></svg>
|
|
59
|
+
Competitors
|
|
60
|
+
</a>
|
|
61
|
+
<div class="sidebar-label" style="margin-top: 0.75rem">Strategy</div>
|
|
62
|
+
<a href="decisions.html" class="nav-link">
|
|
63
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 2v12M2 8h12"/><circle cx="8" cy="8" r="6"/></svg>
|
|
64
|
+
Decisions
|
|
65
|
+
</a>
|
|
66
|
+
<a href="scoring.html" class="nav-link">
|
|
67
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M3 13l3-4 3 2 4-6"/></svg>
|
|
68
|
+
Scoring
|
|
69
|
+
</a>
|
|
70
|
+
<a href="timeline.html" class="nav-link">
|
|
71
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M2 3h12M2 8h12M2 13h12"/><circle cx="5" cy="3" r="1" fill="currentColor"/><circle cx="10" cy="8" r="1" fill="currentColor"/><circle cx="7" cy="13" r="1" fill="currentColor"/></svg>
|
|
72
|
+
Timeline
|
|
73
|
+
</a>
|
|
74
|
+
<a href="research.html" class="nav-link">
|
|
75
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><circle cx="7" cy="7" r="5"/><path d="M11 11l3 3"/></svg>
|
|
76
|
+
Research Hub
|
|
77
|
+
</a>
|
|
78
|
+
</nav>
|
|
79
|
+
<div style="padding: 0.75rem; border-top: 1px solid rgba(255,248,240,0.06);">
|
|
80
|
+
<button id="dark-toggle" class="nav-link" style="width:100%; border:none; background:none; cursor:pointer">
|
|
81
|
+
<svg class="nav-icon" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"><path d="M8 1a7 7 0 100 14 5 5 0 010-10"/></svg>Toggle Theme
|
|
82
|
+
</button>
|
|
83
|
+
</div>
|
|
84
|
+
<div style="padding: 0.5rem 0.75rem; border-top: 1px solid rgba(255,248,240,0.06); text-align: center;">
|
|
85
|
+
<a href="https://github.com/DiffTheEnder/DSS-Claude-Stack" target="_blank" rel="noopener" style="font-size: 0.65rem; color: rgba(155,145,131,0.5); text-decoration: none;">Powered by DS Strategy Stack</a>
|
|
86
|
+
</div>
|
|
87
|
+
</aside>
|
|
88
|
+
|
|
89
|
+
<!-- Main Content -->
|
|
90
|
+
<main class="flex-1 ml-[240px] p-8">
|
|
91
|
+
<header class="mb-8">
|
|
92
|
+
<h1 class="font-serif text-3xl mb-2">Pipeline</h1>
|
|
93
|
+
<p class="text-warmgray-400 text-sm">OPTIONAL — Remove this page if your project has no pipeline/outreach component.</p>
|
|
94
|
+
</header>
|
|
95
|
+
|
|
96
|
+
<section class="bg-white dark:bg-warmdark-800 rounded-xl border border-cream-300 dark:border-warmdark-700 overflow-x-auto">
|
|
97
|
+
<table class="w-full text-sm">
|
|
98
|
+
<thead>
|
|
99
|
+
<tr class="border-b border-cream-300 dark:border-warmdark-700">
|
|
100
|
+
<th class="text-left p-3 font-semibold">Name</th>
|
|
101
|
+
<th class="text-left p-3 font-semibold">Status</th>
|
|
102
|
+
<th class="text-left p-3 font-semibold">Contact</th>
|
|
103
|
+
<th class="text-left p-3 font-semibold">Last Contact</th>
|
|
104
|
+
<th class="text-left p-3 font-semibold">Next Action</th>
|
|
105
|
+
</tr>
|
|
106
|
+
</thead>
|
|
107
|
+
<tbody id="pipeline-body">
|
|
108
|
+
<!-- Populated by JS -->
|
|
109
|
+
</tbody>
|
|
110
|
+
</table>
|
|
111
|
+
</section>
|
|
112
|
+
</main>
|
|
113
|
+
|
|
114
|
+
<script src="js/app.js"></script>
|
|
115
|
+
<script>
|
|
116
|
+
// Pipeline page logic — loads entities.json
|
|
117
|
+
document.addEventListener('DOMContentLoaded', async () => {
|
|
118
|
+
initDarkMode();
|
|
119
|
+
initSidebar();
|
|
120
|
+
initNav();
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
const entities = await loadJSON('entities.json');
|
|
124
|
+
const tbody = document.getElementById('pipeline-body');
|
|
125
|
+
|
|
126
|
+
if (entities.length === 0) {
|
|
127
|
+
tbody.innerHTML = '<tr><td colspan="5" class="p-6 text-center text-warmgray-400">No entities in pipeline yet. Add data to your CSV source of truth.</td></tr>';
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
entities.forEach(entity => {
|
|
132
|
+
const row = document.createElement('tr');
|
|
133
|
+
row.className = 'border-b border-cream-200 dark:border-warmdark-700 hover:bg-cream-100 dark:hover:bg-warmdark-700 transition-colors';
|
|
134
|
+
row.innerHTML = `
|
|
135
|
+
<td class="p-3 font-medium">${entity.name || entity.Name || '—'}</td>
|
|
136
|
+
<td class="p-3"><span class="inline-block px-2 py-0.5 rounded text-xs font-medium bg-accent-100 dark:bg-accent-900 text-accent-700 dark:text-accent-200">${entity.status || entity.Status || '—'}</span></td>
|
|
137
|
+
<td class="p-3 text-warmgray-500">${entity.contact || entity.Contact || '—'}</td>
|
|
138
|
+
<td class="p-3 text-warmgray-500">${entity.lastContact || entity['Last Contact'] || '—'}</td>
|
|
139
|
+
<td class="p-3 text-warmgray-500">${entity.nextAction || entity['Next Action'] || '—'}</td>
|
|
140
|
+
`;
|
|
141
|
+
tbody.appendChild(row);
|
|
142
|
+
});
|
|
143
|
+
} catch (e) {
|
|
144
|
+
console.warn('Could not load pipeline data:', e.message);
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
</script>
|
|
148
|
+
</body>
|
|
149
|
+
</html>
|