@aqaf/cli 0.0.0-stage → 1.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 (34) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -2
  3. package/bin/aqaf.js +12 -0
  4. package/index.js +32 -0
  5. package/package.json +50 -4
  6. package/vendor/aqaf/__init__.py +2 -0
  7. package/vendor/aqaf/__main__.py +3 -0
  8. package/vendor/aqaf/cli.py +583 -0
  9. package/vendor/aqaf/data/catalog.json +562 -0
  10. package/vendor/aqaf/data/packs/automation.json +16 -0
  11. package/vendor/aqaf/data/packs/mobile.json +13 -0
  12. package/vendor/aqaf/data/packs/systems.json +17 -0
  13. package/vendor/aqaf/data/packs/web.json +16 -0
  14. package/vendor/aqaf/data/profiles/ai_pipeline.json +39 -0
  15. package/vendor/aqaf/data/profiles/android.json +34 -0
  16. package/vendor/aqaf/data/profiles/api_backend.json +44 -0
  17. package/vendor/aqaf/data/profiles/browser_extension.json +29 -0
  18. package/vendor/aqaf/data/profiles/cli_automation.json +34 -0
  19. package/vendor/aqaf/data/profiles/desktop_utility.json +39 -0
  20. package/vendor/aqaf/data/profiles/embedded_iot.json +34 -0
  21. package/vendor/aqaf/data/profiles/google_apps_script.json +34 -0
  22. package/vendor/aqaf/data/profiles/mcp_agent_server.json +34 -0
  23. package/vendor/aqaf/data/profiles/multirepo_system.json +29 -0
  24. package/vendor/aqaf/data/profiles/npm_library.json +39 -0
  25. package/vendor/aqaf/data/profiles/rust_app.json +34 -0
  26. package/vendor/aqaf/data/profiles/saas_or_web_app.json +44 -0
  27. package/vendor/aqaf/data/profiles/scraper_data_pipeline.json +39 -0
  28. package/vendor/aqaf/data/profiles/swift_app.json +34 -0
  29. package/vendor/aqaf/data/profiles/tauri_electron.json +34 -0
  30. package/vendor/aqaf/data/profiles/unknown_or_general_app.json +25 -0
  31. package/vendor/aqaf/data/profiles/windows_client_server.json +34 -0
  32. package/vendor/aqaf/data/profiles/wordpress_plugin.json +39 -0
  33. package/vendor/aqaf/data/source_registry.json +302 -0
  34. package/vendor/aqaf/registry.py +124 -0
@@ -0,0 +1,562 @@
1
+ [
2
+ {
3
+ "id": "AQ-DOC-001",
4
+ "name": "Architecture decisions should be documented",
5
+ "severity": "medium",
6
+ "profiles": [
7
+ "all"
8
+ ],
9
+ "evidence": [
10
+ "docs/architecture",
11
+ "ADR files",
12
+ "README architecture section"
13
+ ],
14
+ "rationale": "Important architecture decisions are easier to revisit when recorded with context, options, and consequences.",
15
+ "references": [
16
+ "Software Architecture in Practice",
17
+ "Fundamentals of Software Architecture"
18
+ ],
19
+ "automatable": "partially",
20
+ "remediation": "Add docs/architecture and ADRs for significant decisions.",
21
+ "source_ids": [
22
+ "B01",
23
+ "B02",
24
+ "B11"
25
+ ],
26
+ "status": "heuristic",
27
+ "validation_status": "not_expert_calibrated",
28
+ "false_positive_risk": "medium-to-high",
29
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
30
+ },
31
+ {
32
+ "id": "AQ-DEP-001",
33
+ "name": "Core/domain logic should not depend on infrastructure details",
34
+ "severity": "high",
35
+ "profiles": [
36
+ "saas",
37
+ "desktop",
38
+ "ai_pipeline",
39
+ "cli",
40
+ "library"
41
+ ],
42
+ "evidence": [
43
+ "import graph",
44
+ "package names",
45
+ "framework imports"
46
+ ],
47
+ "rationale": "Stable business rules should be insulated from volatile details such as databases, APIs, frameworks, and UI.",
48
+ "references": [
49
+ "Clean Architecture",
50
+ "Software Architecture in Practice",
51
+ "eShopOnWeb"
52
+ ],
53
+ "automatable": "partially",
54
+ "remediation": "Introduce ports/interfaces in core/application layer and move concrete implementations to infrastructure/adapters.",
55
+ "source_ids": [
56
+ "B09",
57
+ "B13",
58
+ "B01"
59
+ ],
60
+ "status": "heuristic",
61
+ "validation_status": "not_expert_calibrated",
62
+ "false_positive_risk": "medium-to-high",
63
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
64
+ },
65
+ {
66
+ "id": "AQ-MOD-001",
67
+ "name": "Feature or domain modules should have clear ownership",
68
+ "severity": "high",
69
+ "profiles": [
70
+ "saas",
71
+ "android",
72
+ "desktop",
73
+ "ai_pipeline"
74
+ ],
75
+ "evidence": [
76
+ "directory structure",
77
+ "module manifests",
78
+ "imports"
79
+ ],
80
+ "rationale": "Modular boundaries reduce change blast radius and prepare a monolith for future extraction only if needed.",
81
+ "references": [
82
+ "Domain-Driven Design",
83
+ "Fundamentals of Software Architecture",
84
+ "Monolith to Microservices"
85
+ ],
86
+ "automatable": "partially",
87
+ "remediation": "Group code by feature/domain and document module contracts.",
88
+ "source_ids": [
89
+ "B05",
90
+ "B02",
91
+ "B11"
92
+ ],
93
+ "status": "heuristic",
94
+ "validation_status": "not_expert_calibrated",
95
+ "false_positive_risk": "medium-to-high",
96
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
97
+ },
98
+ {
99
+ "id": "AQ-TST-001",
100
+ "name": "Architecture-sensitive areas need tests before refactoring",
101
+ "severity": "high",
102
+ "profiles": [
103
+ "all"
104
+ ],
105
+ "evidence": [
106
+ "tests directory",
107
+ "test files",
108
+ "CI"
109
+ ],
110
+ "rationale": "Untested code should be characterized before structural changes to avoid edit-and-pray refactoring.",
111
+ "references": [
112
+ "Working Effectively with Legacy Code",
113
+ "Accelerate"
114
+ ],
115
+ "automatable": "yes",
116
+ "remediation": "Add characterization tests around behavior before changing architecture.",
117
+ "source_ids": [
118
+ "B06",
119
+ "B03"
120
+ ],
121
+ "status": "heuristic",
122
+ "validation_status": "not_expert_calibrated",
123
+ "false_positive_risk": "medium-to-high",
124
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
125
+ },
126
+ {
127
+ "id": "AQ-CFG-001",
128
+ "name": "Configuration and secrets should be externalized",
129
+ "severity": "high",
130
+ "profiles": [
131
+ "all"
132
+ ],
133
+ "evidence": [
134
+ "hard-coded tokens",
135
+ "URLs",
136
+ "API keys",
137
+ "environment files"
138
+ ],
139
+ "rationale": "Hard-coded secrets/config make deployments unsafe and environments hard to manage.",
140
+ "references": [
141
+ "Twelve-Factor App principles",
142
+ "Accelerate",
143
+ "SonarQube quality/security gates"
144
+ ],
145
+ "automatable": "yes",
146
+ "remediation": "Move secrets/config to environment variables, secret stores, or config files excluded from version control.",
147
+ "source_ids": [
148
+ "S06",
149
+ "B12"
150
+ ],
151
+ "status": "heuristic",
152
+ "validation_status": "not_expert_calibrated",
153
+ "false_positive_risk": "medium-to-high",
154
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
155
+ },
156
+ {
157
+ "id": "AQ-OBS-001",
158
+ "name": "Operational code should include logging and explicit error handling",
159
+ "severity": "medium",
160
+ "profiles": [
161
+ "saas",
162
+ "desktop",
163
+ "ai_pipeline",
164
+ "scraper",
165
+ "cli"
166
+ ],
167
+ "evidence": [
168
+ "logging imports",
169
+ "try/catch",
170
+ "error handling paths"
171
+ ],
172
+ "rationale": "Systems are easier to operate and debug when failures are visible and intentional.",
173
+ "references": [
174
+ "Software Architecture in Practice",
175
+ "Accelerate"
176
+ ],
177
+ "automatable": "partially",
178
+ "remediation": "Add structured logging and explicit handling for network, filesystem, database, and provider failures.",
179
+ "source_ids": [
180
+ "B12",
181
+ "B01"
182
+ ],
183
+ "status": "heuristic",
184
+ "validation_status": "not_expert_calibrated",
185
+ "false_positive_risk": "medium-to-high",
186
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
187
+ },
188
+ {
189
+ "id": "AQ-DATA-001",
190
+ "name": "Data ownership and migrations should be explicit",
191
+ "severity": "high",
192
+ "profiles": [
193
+ "saas",
194
+ "data_pipeline",
195
+ "ai_pipeline"
196
+ ],
197
+ "evidence": [
198
+ "migration files",
199
+ "schema ownership",
200
+ "repositories"
201
+ ],
202
+ "rationale": "Data architecture is often the hardest part to change after product growth.",
203
+ "references": [
204
+ "Designing Data-Intensive Applications",
205
+ "Software Architecture in Practice"
206
+ ],
207
+ "automatable": "partially",
208
+ "remediation": "Document data ownership, schema changes, migrations, retention, and consistency expectations.",
209
+ "source_ids": [
210
+ "B04",
211
+ "B14"
212
+ ],
213
+ "status": "heuristic",
214
+ "validation_status": "not_expert_calibrated",
215
+ "false_positive_risk": "medium-to-high",
216
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
217
+ },
218
+ {
219
+ "id": "AQ-WP-001",
220
+ "name": "WordPress hooks should be thin and delegate to services",
221
+ "severity": "high",
222
+ "profiles": [
223
+ "wordpress_plugin"
224
+ ],
225
+ "evidence": [
226
+ "add_action/add_filter usage",
227
+ "root plugin file size"
228
+ ],
229
+ "rationale": "Hook-heavy procedural files become difficult to test and maintain; hooks should adapt WordPress events into application services.",
230
+ "references": [
231
+ "WordPress Plugin Handbook",
232
+ "Fundamentals of Software Architecture"
233
+ ],
234
+ "automatable": "partially",
235
+ "remediation": "Keep root plugin file small. Move behavior into classes/services and protect admin actions with nonce/capability checks.",
236
+ "source_ids": [
237
+ "S15",
238
+ "B13"
239
+ ],
240
+ "status": "heuristic",
241
+ "validation_status": "not_expert_calibrated",
242
+ "false_positive_risk": "medium-to-high",
243
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
244
+ },
245
+ {
246
+ "id": "AQ-AND-001",
247
+ "name": "Android UI state and business logic should be separated",
248
+ "severity": "high",
249
+ "profiles": [
250
+ "android"
251
+ ],
252
+ "evidence": [
253
+ "ViewModel usage",
254
+ "repository/use-case packages",
255
+ "Gradle modules"
256
+ ],
257
+ "rationale": "Android apps need lifecycle-aware boundaries to stay testable and maintainable as screens grow.",
258
+ "references": [
259
+ "Android app modularization guide",
260
+ "Now in Android",
261
+ "Android Architecture Samples"
262
+ ],
263
+ "automatable": "partially",
264
+ "remediation": "Use ViewModel/repository/use-case boundaries. Consider multi-module structure for growing apps.",
265
+ "source_ids": [
266
+ "S14",
267
+ "B01"
268
+ ],
269
+ "status": "heuristic",
270
+ "validation_status": "not_expert_calibrated",
271
+ "false_positive_risk": "medium-to-high",
272
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
273
+ },
274
+ {
275
+ "id": "AQ-AI-001",
276
+ "name": "AI providers, prompts, and models should be configurable and reproducible",
277
+ "severity": "high",
278
+ "profiles": [
279
+ "ai_pipeline"
280
+ ],
281
+ "evidence": [
282
+ "prompt files",
283
+ "model names",
284
+ "provider clients",
285
+ "cache"
286
+ ],
287
+ "rationale": "AI systems are hard to debug if prompts/model parameters are scattered and not versioned.",
288
+ "references": [
289
+ "Building Evolutionary Architectures",
290
+ "Designing Data-Intensive Applications"
291
+ ],
292
+ "automatable": "partially",
293
+ "remediation": "Centralize prompt templates, model configuration, provider adapters, cache keys, and evaluation fixtures.",
294
+ "source_ids": [
295
+ "B03",
296
+ "B04"
297
+ ],
298
+ "status": "heuristic",
299
+ "validation_status": "not_expert_calibrated",
300
+ "false_positive_risk": "medium-to-high",
301
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
302
+ },
303
+ {
304
+ "id": "AQ-CI-001",
305
+ "name": "New code should pass automated quality gates",
306
+ "severity": "medium",
307
+ "profiles": [
308
+ "all"
309
+ ],
310
+ "evidence": [
311
+ "CI config",
312
+ "linters",
313
+ "tests",
314
+ "quality gates"
315
+ ],
316
+ "rationale": "Clean-as-you-change governance prevents new debt while legacy code is improved gradually.",
317
+ "references": [
318
+ "Accelerate",
319
+ "SonarQube Clean as You Code",
320
+ "Building Evolutionary Architectures"
321
+ ],
322
+ "automatable": "yes",
323
+ "remediation": "Add CI for tests, linting, architecture scan, and security checks appropriate for the stack.",
324
+ "source_ids": [
325
+ "B07",
326
+ "B03"
327
+ ],
328
+ "status": "heuristic",
329
+ "validation_status": "not_expert_calibrated",
330
+ "false_positive_risk": "medium-to-high",
331
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
332
+ },
333
+ {
334
+ "id": "AQ-SWIFT-001",
335
+ "name": "Swift UI layer should not own business workflows",
336
+ "severity": "high",
337
+ "applies_to": [
338
+ "swift_app"
339
+ ],
340
+ "evidence": [
341
+ "SwiftUI View or UIKit controller references URLSession, file IO, persistence, analytics, AI provider, or payment SDK directly"
342
+ ],
343
+ "rationale": "Swift UI code should remain composable and testable; IO and business workflows belong behind state, use-case, service, or reducer boundaries.",
344
+ "recommendation": "Move workflow logic into ViewModel/store/use case/service; inject protocols/adapters; add tests around state transitions and service behavior.",
345
+ "references": [
346
+ "Swift API Design Guidelines",
347
+ "Apple Swift Testing",
348
+ "The Composable Architecture documentation"
349
+ ],
350
+ "source_ids": [
351
+ "S08",
352
+ "S09",
353
+ "B13"
354
+ ],
355
+ "status": "heuristic",
356
+ "validation_status": "not_expert_calibrated",
357
+ "false_positive_risk": "medium-to-high",
358
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
359
+ },
360
+ {
361
+ "id": "AQ-SWIFT-002",
362
+ "name": "Swift features should have explicit package/module boundaries when growing",
363
+ "severity": "medium",
364
+ "applies_to": [
365
+ "swift_app"
366
+ ],
367
+ "evidence": [
368
+ "Many Swift files with no feature folders, no Packages directory, and no module ownership docs"
369
+ ],
370
+ "rationale": "Feature/package boundaries reduce change blast radius and make AI-generated edits safer.",
371
+ "recommendation": "Introduce feature folders or Swift packages for domain/app core/features/infrastructure; document module contracts.",
372
+ "references": [
373
+ "Swift Package Manager documentation",
374
+ "Swift access control documentation"
375
+ ],
376
+ "source_ids": [
377
+ "S08",
378
+ "B02"
379
+ ],
380
+ "status": "heuristic",
381
+ "validation_status": "not_expert_calibrated",
382
+ "false_positive_risk": "medium-to-high",
383
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
384
+ },
385
+ {
386
+ "id": "AQ-RUST-001",
387
+ "name": "Rust binary entrypoints should be thin",
388
+ "severity": "high",
389
+ "applies_to": [
390
+ "rust_app"
391
+ ],
392
+ "evidence": [
393
+ "Large src/main.rs or main.rs with core workflow, IO orchestration, parsing, and business logic mixed together"
394
+ ],
395
+ "rationale": "Library-first Rust projects are easier to test, reuse, benchmark, and evolve.",
396
+ "recommendation": "Move core workflows to src/lib.rs/modules or workspace crates; keep main.rs focused on CLI/config/top-level error reporting.",
397
+ "references": [
398
+ "The Rust Programming Language",
399
+ "Cargo workspaces documentation"
400
+ ],
401
+ "source_ids": [
402
+ "S10",
403
+ "B13"
404
+ ],
405
+ "status": "heuristic",
406
+ "validation_status": "not_expert_calibrated",
407
+ "false_positive_risk": "medium-to-high",
408
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
409
+ },
410
+ {
411
+ "id": "AQ-RUST-002",
412
+ "name": "Unsafe Rust must be treated as an architectural boundary",
413
+ "severity": "high",
414
+ "applies_to": [
415
+ "rust_app"
416
+ ],
417
+ "evidence": [
418
+ "unsafe blocks/functions/traits without nearby safety comments, invariants, or tests"
419
+ ],
420
+ "rationale": "Unsafe code can bypass Rust safety guarantees, so its assumptions must be explicit and reviewable.",
421
+ "recommendation": "Add SAFETY comments, isolate unsafe code, test invariants, and consider Miri/fuzzing where appropriate.",
422
+ "references": [
423
+ "The Rust Programming Language",
424
+ "MISRust safety-critical Rust research"
425
+ ],
426
+ "source_ids": [
427
+ "S10",
428
+ "B01"
429
+ ],
430
+ "status": "heuristic",
431
+ "validation_status": "not_expert_calibrated",
432
+ "false_positive_risk": "medium-to-high",
433
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
434
+ },
435
+ {
436
+ "id": "AQ-RUST-003",
437
+ "name": "Rust dependency risk should be audited",
438
+ "severity": "medium",
439
+ "applies_to": [
440
+ "rust_app"
441
+ ],
442
+ "evidence": [
443
+ "Cargo.lock exists without cargo-deny/cargo-audit or equivalent dependency policy"
444
+ ],
445
+ "rationale": "Rust projects can rely on many transitive dependencies; advisories, licenses, duplicate crates, and source policies should be visible.",
446
+ "recommendation": "Add cargo-deny or equivalent dependency audit to CI; document allowed licenses and banned crates/sources.",
447
+ "references": [
448
+ "cargo-deny",
449
+ "Auditing Rust Crates Effectively"
450
+ ],
451
+ "source_ids": [
452
+ "S07",
453
+ "B12"
454
+ ],
455
+ "status": "heuristic",
456
+ "validation_status": "not_expert_calibrated",
457
+ "false_positive_risk": "medium-to-high",
458
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
459
+ },
460
+ {
461
+ "id": "AQ-EVO-001",
462
+ "name": "Framework self-improvement must preserve core rule integrity",
463
+ "severity": "medium",
464
+ "applies_to": [
465
+ "aqaf_framework"
466
+ ],
467
+ "evidence": [
468
+ "New examples or findings proposed as core rule changes without validation, references, or counterexamples"
469
+ ],
470
+ "rationale": "A review framework becomes noisy if every example mutates the core model. Learning must happen through evidence, profiles, adapters, and validation before core promotion.",
471
+ "recommendation": "Add proposed changes as experimental rules or product-profile mappings first; require references, example repos, false-positive review, and changelog entry before promotion.",
472
+ "references": [
473
+ "Building Evolutionary Architectures",
474
+ "Software Architecture in Practice"
475
+ ],
476
+ "source_ids": [
477
+ "B01"
478
+ ],
479
+ "status": "manual",
480
+ "validation_status": "not_automated",
481
+ "false_positive_risk": "medium-to-high",
482
+ "reference_scope": "methodological inspiration; source does not endorse rule or numeric threshold"
483
+ },
484
+ {
485
+ "id": "AQ-EXT-001",
486
+ "name": "Browser extension permissions should be proportionate",
487
+ "severity": "high",
488
+ "profiles": [
489
+ "browser_extension"
490
+ ],
491
+ "evidence": [
492
+ "manifest or source-level heuristic"
493
+ ],
494
+ "rationale": "Broad extension host permissions increase the potential impact of a defect or compromise.",
495
+ "references": [
496
+ "B01",
497
+ "B09"
498
+ ],
499
+ "automatable": "partially",
500
+ "remediation": "Prefer narrowly scoped or optional host permissions and document necessary exceptions.",
501
+ "source_ids": [
502
+ "B01",
503
+ "B09"
504
+ ],
505
+ "status": "heuristic",
506
+ "validation_status": "synthetic_fixtures_only",
507
+ "false_positive_risk": "medium",
508
+ "reference_scope": "Architecture guidance; does not validate heuristic accuracy"
509
+ },
510
+ {
511
+ "id": "AQ-GAS-001",
512
+ "name": "Google Apps Script entrypoints should delegate IO",
513
+ "severity": "medium",
514
+ "profiles": [
515
+ "google_apps_script"
516
+ ],
517
+ "evidence": [
518
+ "manifest or source-level heuristic"
519
+ ],
520
+ "rationale": "Thin triggers ease quota management and testing of external integrations.",
521
+ "references": [
522
+ "B03",
523
+ "B06"
524
+ ],
525
+ "automatable": "partially",
526
+ "remediation": "Delegate integration logic from triggers to testable services.",
527
+ "source_ids": [
528
+ "B03",
529
+ "B06"
530
+ ],
531
+ "status": "heuristic",
532
+ "validation_status": "synthetic_fixtures_only",
533
+ "false_positive_risk": "medium",
534
+ "reference_scope": "Architecture guidance; does not validate heuristic accuracy"
535
+ },
536
+ {
537
+ "id": "AQ-NPM-001",
538
+ "name": "npm libraries need explicit public entrypoint",
539
+ "severity": "medium",
540
+ "profiles": [
541
+ "npm_library"
542
+ ],
543
+ "evidence": [
544
+ "manifest or source-level heuristic"
545
+ ],
546
+ "rationale": "Package consumers need clear public exports or executable entrypoints.",
547
+ "references": [
548
+ "B02",
549
+ "B03"
550
+ ],
551
+ "automatable": "partially",
552
+ "remediation": "Define exports/main/bin as appropriate and validate packed artifact.",
553
+ "source_ids": [
554
+ "B02",
555
+ "B03"
556
+ ],
557
+ "status": "heuristic",
558
+ "validation_status": "synthetic_fixtures_only",
559
+ "false_positive_risk": "medium",
560
+ "reference_scope": "Architecture guidance; does not validate heuristic accuracy"
561
+ }
562
+ ]
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema_version": 1,
3
+ "id": "automation",
4
+ "name": "Automation & AI Pack",
5
+ "description": "CLI, Google Apps Script, data pipelines, AI and MCP services",
6
+ "profiles": [
7
+ "cli_automation",
8
+ "google_apps_script",
9
+ "scraper_data_pipeline",
10
+ "ai_pipeline",
11
+ "mcp_agent_server"
12
+ ],
13
+ "status": "mixed_coverage",
14
+ "pack_license": "MIT",
15
+ "commercial_note": "Base profiles are MIT-licensed; specialist services and verified benchmarks can be offered separately."
16
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schema_version": 1,
3
+ "id": "mobile",
4
+ "name": "Mobile Pack",
5
+ "description": "iOS/macOS Swift and native Android architecture",
6
+ "profiles": [
7
+ "swift_app",
8
+ "android"
9
+ ],
10
+ "status": "mixed_coverage",
11
+ "pack_license": "MIT",
12
+ "commercial_note": "Base profiles are MIT-licensed; specialist services and verified benchmarks can be offered separately."
13
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "schema_version": 1,
3
+ "id": "systems",
4
+ "name": "Systems & Desktop Pack",
5
+ "description": "Rust, Windows client/server, desktop shells, IoT, distributed workspaces",
6
+ "profiles": [
7
+ "rust_app",
8
+ "windows_client_server",
9
+ "desktop_utility",
10
+ "tauri_electron",
11
+ "embedded_iot",
12
+ "multirepo_system"
13
+ ],
14
+ "status": "mixed_coverage",
15
+ "pack_license": "MIT",
16
+ "commercial_note": "Base profiles are MIT-licensed; specialist services and verified benchmarks can be offered separately."
17
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schema_version": 1,
3
+ "id": "web",
4
+ "name": "Web & API Pack",
5
+ "description": "Web applications, API backends, WordPress, browser extensions and npm libraries",
6
+ "profiles": [
7
+ "saas_or_web_app",
8
+ "api_backend",
9
+ "wordpress_plugin",
10
+ "browser_extension",
11
+ "npm_library"
12
+ ],
13
+ "status": "mixed_coverage",
14
+ "pack_license": "MIT",
15
+ "commercial_note": "Base profiles are MIT-licensed; specialist services and verified benchmarks can be offered separately."
16
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "schema_version": 1,
3
+ "id": "ai_pipeline",
4
+ "name": "AI/Agent Pipeline",
5
+ "product_type": "automation",
6
+ "target_architecture": "Pipeline with explicit stages and provider adapters, prompt/model configuration, evaluations and resumable checkpoints.",
7
+ "packs": [
8
+ "automation"
9
+ ],
10
+ "detection": [
11
+ {
12
+ "kind": "text",
13
+ "value": "ollama",
14
+ "weight": 42
15
+ },
16
+ {
17
+ "kind": "text",
18
+ "value": "langchain",
19
+ "weight": 43
20
+ },
21
+ {
22
+ "kind": "text",
23
+ "value": "openai",
24
+ "weight": 30
25
+ }
26
+ ],
27
+ "quality_priorities": [
28
+ "prompt/version traceability",
29
+ "evaluations",
30
+ "recovery"
31
+ ],
32
+ "source_ids": [
33
+ "B03",
34
+ "B04"
35
+ ],
36
+ "status": "heuristic",
37
+ "coverage": "heuristic",
38
+ "notes": ""
39
+ }