r2pde-ai 0.1.5 → 0.1.6
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/ONBOARDING-QUICKSTART.md +9 -0
- package/README.md +11 -2
- package/dist/src/commands/init.js +14 -2
- package/dist/src/commands/scaffold-create.js +6 -20
- package/dist/templates/scaffold.yaml +26 -0
- package/package.json +2 -1
- package/templates/contract.template.md +13 -0
- package/templates/manifest.template.md +13 -0
- package/templates/requirement.template.md +12 -0
- package/templates/scaffold.yaml +26 -0
package/ONBOARDING-QUICKSTART.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
# Scaffold
|
|
2
|
+
|
|
3
|
+
O comando `scaffold-create` exige o parâmetro `--guide <yaml>`, que deve apontar para um arquivo YAML na raiz do projeto. O comando `init` copia automaticamente um `scaffold.yaml` de exemplo para a raiz do projeto.
|
|
4
|
+
|
|
5
|
+
Exemplo:
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
r2pde-ai scaffold-create --guide ./scaffold.yaml
|
|
9
|
+
```
|
|
1
10
|
# Corporate Agenda Quickstart Guide
|
|
2
11
|
|
|
3
12
|
> **Build a Professional Corporate Agenda App with User Management and Calendar Sync (Outlook & Google) using r2pde-ai**
|
package/README.md
CHANGED
|
@@ -401,13 +401,22 @@ See [LICENSE](./LICENSE) for full terms.
|
|
|
401
401
|
Você pode gerar automaticamente um projeto de exemplo baseado no arquivo de guia (por padrão ONBOARDING-QUICKSTART.md) usando:
|
|
402
402
|
|
|
403
403
|
```bash
|
|
404
|
-
r2pde-ai scaffold-
|
|
404
|
+
r2pde-ai scaffold-create --guide ./scaffold.yaml
|
|
405
405
|
```
|
|
406
406
|
|
|
407
407
|
Ou especificar um guia e pasta de destino personalizados:
|
|
408
408
|
|
|
409
409
|
```bash
|
|
410
|
-
r2pde-ai scaffold-
|
|
410
|
+
r2pde-ai scaffold-create --guide ./meu-guia.yaml
|
|
411
|
+
## Scaffold
|
|
412
|
+
|
|
413
|
+
O comando `scaffold-create` agora exige explicitamente o parâmetro `--guide <yaml>`, que deve apontar para um arquivo YAML na raiz do projeto. O comando `init` copia automaticamente um `scaffold.yaml` de exemplo para a raiz do projeto. Edite esse arquivo conforme necessário para gerar scaffolds customizados.
|
|
414
|
+
|
|
415
|
+
Exemplo de uso:
|
|
416
|
+
|
|
417
|
+
```sh
|
|
418
|
+
r2pde-ai scaffold-create --guide ./scaffold.yaml
|
|
419
|
+
```
|
|
411
420
|
```
|
|
412
421
|
|
|
413
422
|
Isso executa todos os comandos do guia, preenchendo automaticamente os prompts, e gera uma estrutura pronta para testes, onboarding ou demonstração.
|
|
@@ -167,8 +167,7 @@ export async function initCommand() {
|
|
|
167
167
|
- r2pde-ai: 0.1.0
|
|
168
168
|
`;
|
|
169
169
|
fs.writeFileSync(paths.index, indexContent, { encoding: 'utf8' });
|
|
170
|
-
// Step 6
|
|
171
|
-
// Corrigir caminho dos templates para dist/templates
|
|
170
|
+
// Step 6 – Copy templates and scaffold.yaml to project root
|
|
172
171
|
const templateFiles = [
|
|
173
172
|
{ src: path.resolve(__dirname, '../../templates/manifest.template.md'), dest: path.resolve(paths.templates, 'manifest.template.md') },
|
|
174
173
|
{ src: path.resolve(__dirname, '../../templates/contract.template.md'), dest: path.resolve(paths.templates, 'contract.template.md') },
|
|
@@ -177,6 +176,19 @@ export async function initCommand() {
|
|
|
177
176
|
for (const { src, dest } of templateFiles) {
|
|
178
177
|
fs.copyFileSync(src, dest);
|
|
179
178
|
}
|
|
179
|
+
// Copy scaffold.yaml from dist/templates (if built) or templates (dev) to project root
|
|
180
|
+
let scaffoldSrc = path.resolve(__dirname, '../../dist/templates/scaffold.yaml');
|
|
181
|
+
if (!fs.existsSync(scaffoldSrc)) {
|
|
182
|
+
scaffoldSrc = path.resolve(__dirname, '../../templates/scaffold.yaml');
|
|
183
|
+
}
|
|
184
|
+
const scaffoldDest = path.resolve(cwd, 'scaffold.yaml');
|
|
185
|
+
if (!fs.existsSync(scaffoldDest)) {
|
|
186
|
+
fs.copyFileSync(scaffoldSrc, scaffoldDest);
|
|
187
|
+
logInfo('Arquivo scaffold.yaml copiado para a raiz do projeto. Edite conforme necessário para usar o scaffold-create.');
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
logWarn('Arquivo scaffold.yaml já existe na raiz do projeto. Não sobrescrito.');
|
|
191
|
+
}
|
|
180
192
|
const guideContent = [
|
|
181
193
|
'# r2pde-ai GUIDE',
|
|
182
194
|
'',
|
|
@@ -144,29 +144,15 @@ function copyFolderRecursiveSync(source, target) {
|
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
146
|
export const scaffoldCreateCommand = new Command('scaffold-create')
|
|
147
|
-
.description('Gera um projeto de exemplo a partir de um arquivo de guia YAML')
|
|
148
|
-
.option('--guide <yaml>', 'Caminho para o arquivo de guia YAML (
|
|
147
|
+
.description('Gera um projeto de exemplo a partir de um arquivo de guia YAML. Se --guide não for informado, será usado ./scaffold.yaml da raiz do projeto.')
|
|
148
|
+
.option('--guide <yaml>', 'Caminho para o arquivo de guia YAML (opcional, padrão: ./scaffold.yaml na raiz do projeto)')
|
|
149
149
|
.action((opts) => {
|
|
150
|
-
|
|
151
|
-
if (
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
// Caminho relativo ao CLI instalado globalmente
|
|
156
|
-
let cliDir = path.dirname(new URL(import.meta.url).pathname);
|
|
157
|
-
if (process.platform === 'win32' && cliDir.startsWith('/')) {
|
|
158
|
-
cliDir = cliDir.slice(1);
|
|
159
|
-
}
|
|
160
|
-
candidates.push(path.resolve(process.cwd(), 'scaffold-guide.yaml'), path.resolve(cliDir, '../../scaffold-guide.yaml'), path.resolve(cliDir, '../scaffold-guide.yaml'));
|
|
161
|
-
}
|
|
162
|
-
const foundPath = candidates.find(f => f && fs.existsSync(f));
|
|
163
|
-
if (!foundPath) {
|
|
164
|
-
console.error('Arquivo scaffold-guide.yaml não encontrado em nenhum local padrão. Caminhos testados:');
|
|
165
|
-
candidates.forEach(f => console.error(' - ' + f));
|
|
150
|
+
let guidePath = opts.guide ? path.resolve(opts.guide) : path.resolve(process.cwd(), 'scaffold.yaml');
|
|
151
|
+
if (!fs.existsSync(guidePath)) {
|
|
152
|
+
console.error('Arquivo YAML não encontrado: ' + guidePath + '\nInforme --guide <yaml> ou rode o comando init para gerar um scaffold.yaml de exemplo.');
|
|
166
153
|
process.exit(1);
|
|
167
154
|
}
|
|
168
|
-
|
|
169
|
-
scaffoldCreateHandler(opts).catch((err) => {
|
|
155
|
+
scaffoldCreateHandler({ guide: guidePath }).catch((err) => {
|
|
170
156
|
console.error(err);
|
|
171
157
|
process.exit(1);
|
|
172
158
|
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
project:
|
|
2
|
+
name: Example Project
|
|
3
|
+
root: scaffold_done
|
|
4
|
+
description: |
|
|
5
|
+
Example YAML for r2pde-ai scaffold. Replace with your project details.
|
|
6
|
+
steps:
|
|
7
|
+
- type: mkdir
|
|
8
|
+
path: .r2pde-ai
|
|
9
|
+
comment: Create config folder.
|
|
10
|
+
- type: cli
|
|
11
|
+
command: npm init -y
|
|
12
|
+
comment: Initialize npm.
|
|
13
|
+
- type: git-init
|
|
14
|
+
comment: Initialize git repo.
|
|
15
|
+
- type: cli
|
|
16
|
+
command: npx r2pde-ai init
|
|
17
|
+
answers:
|
|
18
|
+
- Example Project
|
|
19
|
+
- Micro SaaS
|
|
20
|
+
- Monolith
|
|
21
|
+
- Clean Code
|
|
22
|
+
- MVP
|
|
23
|
+
- English
|
|
24
|
+
comment: Run r2pde-ai init with defaults.
|
|
25
|
+
files:
|
|
26
|
+
- README.md
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "r2pde-ai",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Pilot Driven Engineering — A CLI framework that bridges the gap between architectural intent and AI-generated code.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -44,6 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
"files": [
|
|
46
46
|
"dist",
|
|
47
|
+
"templates",
|
|
47
48
|
"README.md",
|
|
48
49
|
"LICENSE",
|
|
49
50
|
"CHANGELOG.md",
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
project:
|
|
2
|
+
name: Example Project
|
|
3
|
+
root: scaffold_done
|
|
4
|
+
description: |
|
|
5
|
+
Example YAML for r2pde-ai scaffold. Replace with your project details.
|
|
6
|
+
steps:
|
|
7
|
+
- type: mkdir
|
|
8
|
+
path: .r2pde-ai
|
|
9
|
+
comment: Create config folder.
|
|
10
|
+
- type: cli
|
|
11
|
+
command: npm init -y
|
|
12
|
+
comment: Initialize npm.
|
|
13
|
+
- type: git-init
|
|
14
|
+
comment: Initialize git repo.
|
|
15
|
+
- type: cli
|
|
16
|
+
command: npx r2pde-ai init
|
|
17
|
+
answers:
|
|
18
|
+
- Example Project
|
|
19
|
+
- Micro SaaS
|
|
20
|
+
- Monolith
|
|
21
|
+
- Clean Code
|
|
22
|
+
- MVP
|
|
23
|
+
- English
|
|
24
|
+
comment: Run r2pde-ai init with defaults.
|
|
25
|
+
files:
|
|
26
|
+
- README.md
|