@codedrifters/configulator 0.0.345 → 0.0.347
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/lib/index.d.mts +71 -6
- package/lib/index.d.ts +72 -7
- package/lib/index.js +196 -130
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +195 -130
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.mjs
CHANGED
|
@@ -1677,6 +1677,19 @@ function assertValidBundlePathPatterns(value) {
|
|
|
1677
1677
|
}
|
|
1678
1678
|
|
|
1679
1679
|
// src/agent/bundles/paths.ts
|
|
1680
|
+
var DEFAULT_REQUIREMENT_CATEGORY_DIRS = Object.freeze({
|
|
1681
|
+
business: "business",
|
|
1682
|
+
functional: "functional",
|
|
1683
|
+
nonFunctional: "non-functional",
|
|
1684
|
+
technical: "technical",
|
|
1685
|
+
architecturalDecisions: "architectural-decisions",
|
|
1686
|
+
security: "security",
|
|
1687
|
+
data: "data",
|
|
1688
|
+
integration: "integration",
|
|
1689
|
+
operational: "operational",
|
|
1690
|
+
ux: "ux",
|
|
1691
|
+
multiTenancy: "multi-tenancy"
|
|
1692
|
+
});
|
|
1680
1693
|
var DEFAULT_AGENT_PATHS = Object.freeze({
|
|
1681
1694
|
docsRoot: "docs/src/content/docs",
|
|
1682
1695
|
researchRoot: "docs/research",
|
|
@@ -1688,7 +1701,8 @@ var DEFAULT_AGENT_PATHS = Object.freeze({
|
|
|
1688
1701
|
peopleRoot: "docs/src/content/docs/profiles/people",
|
|
1689
1702
|
companiesRoot: "docs/src/content/docs/profiles/companies",
|
|
1690
1703
|
softwareRoot: "docs/src/content/docs/profiles/software",
|
|
1691
|
-
industriesRoot: "docs/src/content/docs/profiles/industries"
|
|
1704
|
+
industriesRoot: "docs/src/content/docs/profiles/industries",
|
|
1705
|
+
requirementCategoryDirs: DEFAULT_REQUIREMENT_CATEGORY_DIRS
|
|
1692
1706
|
});
|
|
1693
1707
|
function resolveAgentPaths(paths) {
|
|
1694
1708
|
const docsRoot = paths?.docsRoot ?? DEFAULT_AGENT_PATHS.docsRoot;
|
|
@@ -1702,6 +1716,20 @@ function resolveAgentPaths(paths) {
|
|
|
1702
1716
|
const companiesRoot = paths?.companiesRoot ?? `${profilesRoot}/companies`;
|
|
1703
1717
|
const softwareRoot = paths?.softwareRoot ?? `${profilesRoot}/software`;
|
|
1704
1718
|
const industriesRoot = paths?.industriesRoot ?? `${profilesRoot}/industries`;
|
|
1719
|
+
const categoryOverrides = paths?.requirementCategoryDirs;
|
|
1720
|
+
const requirementCategoryDirs = {
|
|
1721
|
+
business: categoryOverrides?.business ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.business,
|
|
1722
|
+
functional: categoryOverrides?.functional ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.functional,
|
|
1723
|
+
nonFunctional: categoryOverrides?.nonFunctional ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.nonFunctional,
|
|
1724
|
+
technical: categoryOverrides?.technical ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.technical,
|
|
1725
|
+
architecturalDecisions: categoryOverrides?.architecturalDecisions ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.architecturalDecisions,
|
|
1726
|
+
security: categoryOverrides?.security ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.security,
|
|
1727
|
+
data: categoryOverrides?.data ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.data,
|
|
1728
|
+
integration: categoryOverrides?.integration ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.integration,
|
|
1729
|
+
operational: categoryOverrides?.operational ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.operational,
|
|
1730
|
+
ux: categoryOverrides?.ux ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.ux,
|
|
1731
|
+
multiTenancy: categoryOverrides?.multiTenancy ?? DEFAULT_REQUIREMENT_CATEGORY_DIRS.multiTenancy
|
|
1732
|
+
};
|
|
1705
1733
|
return {
|
|
1706
1734
|
docsRoot,
|
|
1707
1735
|
researchRoot,
|
|
@@ -1713,7 +1741,8 @@ function resolveAgentPaths(paths) {
|
|
|
1713
1741
|
peopleRoot,
|
|
1714
1742
|
companiesRoot,
|
|
1715
1743
|
softwareRoot,
|
|
1716
|
-
industriesRoot
|
|
1744
|
+
industriesRoot,
|
|
1745
|
+
requirementCategoryDirs
|
|
1717
1746
|
};
|
|
1718
1747
|
}
|
|
1719
1748
|
|
|
@@ -6157,7 +6186,7 @@ function buildScanBusinessModelsSkill(paths, issueDefaults) {
|
|
|
6157
6186
|
"Optional extensions in the issue body:",
|
|
6158
6187
|
"- `plan: <path>` \u2014 path to the industry-discovery plan file that",
|
|
6159
6188
|
" cleared this industry for downstream research (e.g.",
|
|
6160
|
-
|
|
6189
|
+
` \`${paths.industriesRoot}/plans/<slug>.plan.md\`)`,
|
|
6161
6190
|
"- `sources: <list>` \u2014 additional authorized input paths",
|
|
6162
6191
|
"- `exclude: <segment list>` \u2014 segments already covered to skip",
|
|
6163
6192
|
"- `slug: <kebab-case>` \u2014 override the derived industry slug",
|
|
@@ -6557,15 +6586,15 @@ function buildCompanyProfileAnalystSubAgent(paths, issueDefaults, tier) {
|
|
|
6557
6586
|
"",
|
|
6558
6587
|
"| Placeholder | Meaning | Default |",
|
|
6559
6588
|
"|-------------|---------|---------|",
|
|
6560
|
-
|
|
6589
|
+
`| \`<COMPANY_ROOT>\` | Root folder for company profiles | \`${paths.companiesRoot}/\` |`,
|
|
6561
6590
|
"| `<PROFILES_DIR>` | Final company profile files | `<COMPANY_ROOT>/profiles/` |",
|
|
6562
6591
|
"| `<NOTES_DIR>` | Research-notes files from Phase 1 | `<COMPANY_ROOT>/notes/` |",
|
|
6563
6592
|
"| `<ANALYSIS_DIR>` | Segment-level competitive-analysis documents from Phase 6 | `<COMPANY_ROOT>/analysis/` |",
|
|
6564
6593
|
"| `<COMPANY_SLUG>` | Short kebab-case slug identifying the company | derived from the company name |",
|
|
6565
6594
|
"| `<SEGMENT_SLUG>` | Short kebab-case slug identifying the industry segment | derived from the segment name |",
|
|
6566
6595
|
`| \`<BUSINESS_MODELS_ROOT>\` | Where existing business-model canvases live (consumed by Phase 4) | \`${paths.docsRoot}/industry-research/\` |`,
|
|
6567
|
-
|
|
6568
|
-
|
|
6596
|
+
`| \`<PEOPLE_PROFILES_DIR>\` | Where existing people profiles live (for duplicate detection during followup) | \`${paths.peopleRoot}/profiles/\` |`,
|
|
6597
|
+
`| \`<SOFTWARE_PROFILES_DIR>\` | Where existing software profiles live (for duplicate detection during followup) | \`${paths.softwareRoot}/profiles/\` |`,
|
|
6569
6598
|
"",
|
|
6570
6599
|
`If \`${paths.docsRoot}/project-context.md\` specifies a different company-research`,
|
|
6571
6600
|
"tree (for example by reusing the research-pipeline deliverables",
|
|
@@ -7388,8 +7417,8 @@ function buildProfileCompanySkill(paths, issueDefaults) {
|
|
|
7388
7417
|
`If the project has no override in \`${paths.docsRoot}/project-context.md\` or`,
|
|
7389
7418
|
"`agentConfig.rules`, outputs land under:",
|
|
7390
7419
|
"",
|
|
7391
|
-
|
|
7392
|
-
|
|
7420
|
+
`- \`${paths.companiesRoot}/notes/<slug>.notes.md\``,
|
|
7421
|
+
`- \`${paths.companiesRoot}/profiles/<slug>.md\``,
|
|
7393
7422
|
"",
|
|
7394
7423
|
"## Steps",
|
|
7395
7424
|
"",
|
|
@@ -7594,7 +7623,7 @@ function buildAnalyzeSegmentSkill(paths, issueDefaults) {
|
|
|
7594
7623
|
`If the project has no override in \`${paths.docsRoot}/project-context.md\` or`,
|
|
7595
7624
|
"`agentConfig.rules`, outputs land under:",
|
|
7596
7625
|
"",
|
|
7597
|
-
|
|
7626
|
+
`- \`${paths.companiesRoot}/analysis/<segment-slug>.md\``,
|
|
7598
7627
|
"",
|
|
7599
7628
|
"## Blocking Rule",
|
|
7600
7629
|
"",
|
|
@@ -8026,7 +8055,7 @@ function buildCustomerProfileAnalystSubAgent(paths, issueDefaults, tier) {
|
|
|
8026
8055
|
"| `<COMPETITORS_DIR>` | Per-archetype competitor analyses | `<CUSTOMER_ROOT>/competitors/` |",
|
|
8027
8056
|
"| `<COMPETITORS_PAGE>` | One-archetype competitor-analysis page | `<COMPETITORS_DIR>/<ARCHETYPE_SLUG>.md` |",
|
|
8028
8057
|
"| `<DISCOVERY_DIR>` | Discovery reports written during Phase 1 | `<researchRoot>/customer/` |",
|
|
8029
|
-
|
|
8058
|
+
`| \`<MATRIX_FILE>\` | Shared software-profile feature-matrix file | \`${paths.softwareRoot}/feature-matrix.md\` |`,
|
|
8030
8059
|
"| `<SCOPE_SLUG>` | Short kebab-case slug identifying the discovery scope | derived from the discover issue |",
|
|
8031
8060
|
"| `<ARCHETYPE_SLUG>` | Short kebab-case slug identifying one archetype | derived from the profile issue |",
|
|
8032
8061
|
"",
|
|
@@ -8659,7 +8688,7 @@ function buildAnalyzeCustomerCompetitorsSkill(paths, issueDefaults) {
|
|
|
8659
8688
|
"",
|
|
8660
8689
|
"Optional extensions:",
|
|
8661
8690
|
"- `matrix_file: <path>` \u2014 override for the shared feature-matrix",
|
|
8662
|
-
|
|
8691
|
+
` file. Defaults to \`${paths.softwareRoot}/feature-matrix.md\`.`,
|
|
8663
8692
|
"",
|
|
8664
8693
|
"## Default Paths",
|
|
8665
8694
|
"",
|
|
@@ -10505,7 +10534,7 @@ function buildIndustryDiscoveryAnalystSubAgent(paths, issueDefaults) {
|
|
|
10505
10534
|
"",
|
|
10506
10535
|
"| Placeholder | Meaning | Default |",
|
|
10507
10536
|
"|-------------|---------|---------|",
|
|
10508
|
-
|
|
10537
|
+
`| \`<INDUSTRY_ROOT>\` | Root folder for all industry-discovery outputs | \`${paths.industriesRoot}/\` |`,
|
|
10509
10538
|
"| `<CANDIDATES_DIR>` | Candidate-list files (Phase 1) | `<INDUSTRY_ROOT>/candidates/` |",
|
|
10510
10539
|
"| `<EVALUATIONS_DIR>` | Evaluation files with per-candidate scores (Phase 2) | `<INDUSTRY_ROOT>/evaluations/` |",
|
|
10511
10540
|
"| `<PLANS_DIR>` | Plan files summarizing downstream research (Phase 3) | `<INDUSTRY_ROOT>/plans/` |",
|
|
@@ -10826,9 +10855,9 @@ function buildDiscoverIndustriesSkill(paths, issueDefaults) {
|
|
|
10826
10855
|
`If the project has no override in \`${paths.docsRoot}/project-context.md\` or`,
|
|
10827
10856
|
"`agentConfig.rules`, outputs land under:",
|
|
10828
10857
|
"",
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10858
|
+
`- \`${paths.industriesRoot}/candidates/<slug>.candidates.md\``,
|
|
10859
|
+
`- \`${paths.industriesRoot}/evaluations/<slug>.evaluation.md\``,
|
|
10860
|
+
`- \`${paths.industriesRoot}/plans/<slug>.plan.md\``,
|
|
10832
10861
|
"",
|
|
10833
10862
|
"## Steps",
|
|
10834
10863
|
"",
|
|
@@ -16459,13 +16488,13 @@ function buildPeopleProfileAnalystSubAgent(paths, issueDefaults, tier) {
|
|
|
16459
16488
|
"",
|
|
16460
16489
|
"| Placeholder | Meaning | Default |",
|
|
16461
16490
|
"|-------------|---------|---------|",
|
|
16462
|
-
|
|
16491
|
+
`| \`<PEOPLE_ROOT>\` | Root folder for person profiles | \`${paths.peopleRoot}/\` |`,
|
|
16463
16492
|
"| `<PROFILES_DIR>` | Final person profile files | `<PEOPLE_ROOT>/profiles/` |",
|
|
16464
16493
|
"| `<NOTES_DIR>` | Research-notes files from Phase 1 | `<PEOPLE_ROOT>/notes/` |",
|
|
16465
16494
|
"| `<PERSON_SLUG>` | Short kebab-case slug identifying the person | derived from the person's name |",
|
|
16466
|
-
|
|
16467
|
-
|
|
16468
|
-
|
|
16495
|
+
`| \`<COMPANIES_DIR>\` | Where existing company profiles live (for cross-references and duplicate detection during followup) | \`${paths.companiesRoot}/profiles/\` |`,
|
|
16496
|
+
`| \`<SOFTWARE_DIR>\` | Where existing software profiles live (for cross-references and duplicate detection during followup) | \`${paths.softwareRoot}/profiles/\` |`,
|
|
16497
|
+
`| \`<MEETINGS_DIR>\` | Where meeting notes live (for cross-references) | \`${paths.meetingsRoot}/\` |`,
|
|
16469
16498
|
"",
|
|
16470
16499
|
`If \`${paths.docsRoot}/project-context.md\` specifies a different people-research`,
|
|
16471
16500
|
"tree or cross-reference target, prefer that. Otherwise fall back to",
|
|
@@ -17037,14 +17066,14 @@ function buildProfilePersonSkill(paths, issueDefaults) {
|
|
|
17037
17066
|
`If the project has no override in \`${paths.docsRoot}/project-context.md\` or`,
|
|
17038
17067
|
"`agentConfig.rules`, outputs land under:",
|
|
17039
17068
|
"",
|
|
17040
|
-
|
|
17041
|
-
|
|
17069
|
+
`- \`${paths.peopleRoot}/notes/<slug>.notes.md\``,
|
|
17070
|
+
`- \`${paths.peopleRoot}/profiles/<slug>.md\``,
|
|
17042
17071
|
"",
|
|
17043
17072
|
"Cross-references are resolved against:",
|
|
17044
17073
|
"",
|
|
17045
|
-
|
|
17046
|
-
|
|
17047
|
-
|
|
17074
|
+
`- \`${paths.companiesRoot}/profiles/\``,
|
|
17075
|
+
`- \`${paths.softwareRoot}/profiles/\``,
|
|
17076
|
+
`- \`${paths.meetingsRoot}/\``,
|
|
17048
17077
|
"",
|
|
17049
17078
|
"## Steps",
|
|
17050
17079
|
"",
|
|
@@ -20803,7 +20832,7 @@ function buildRequirementsAnalystSubAgent(paths, issueDefaults) {
|
|
|
20803
20832
|
`| \`<COMPETITIVE_ROOT>\` | Competitive analysis docs | \`${paths.docsRoot}/business-strategy/competitive/\` |`,
|
|
20804
20833
|
`| \`<PRODUCT_ROOT>\` | Product roadmap / entity taxonomy | \`${paths.docsRoot}/product/\` |`,
|
|
20805
20834
|
`| \`<MEETINGS_ROOT>\` | Meeting extracts | \`${paths.docsRoot}/research/meetings/\` |`,
|
|
20806
|
-
`| \`<RESEARCH_REQUIREMENTS_ROOT>\` | Scan reports and proposals | \`${paths.
|
|
20835
|
+
`| \`<RESEARCH_REQUIREMENTS_ROOT>\` | Scan reports and proposals | \`${paths.researchRequirementsRoot}/\` |`,
|
|
20807
20836
|
`| \`<REQUIREMENTS_ROOT>\` | Final requirement documents (owned by requirements-writer) | \`${paths.requirementsRoot}/\` |`,
|
|
20808
20837
|
"| `<PREFIX>` | Project-specific requirement ID prefix | e.g. `VRTX`, `ACME` |",
|
|
20809
20838
|
"",
|
|
@@ -21224,7 +21253,7 @@ function buildRequirementsAnalystBundle(paths = DEFAULT_AGENT_PATHS, issueDefaul
|
|
|
21224
21253
|
var requirementsAnalystBundle = buildRequirementsAnalystBundle();
|
|
21225
21254
|
|
|
21226
21255
|
// src/agent/bundles/requirements-writer.ts
|
|
21227
|
-
var
|
|
21256
|
+
var templateBr = (paths) => `---
|
|
21228
21257
|
title: "BR-NNN: [Business Requirement Title]"
|
|
21229
21258
|
---
|
|
21230
21259
|
|
|
@@ -21293,9 +21322,9 @@ Other business requirements, external factors, or organizational decisions this
|
|
|
21293
21322
|
|
|
21294
21323
|
## Traceability
|
|
21295
21324
|
|
|
21296
|
-
- **Decomposes into:** [FR-NNN](
|
|
21297
|
-
- **Constrained by:** [NFR-NNN](
|
|
21298
|
-
- **Related:** [SEC-NNN](
|
|
21325
|
+
- **Decomposes into:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md), [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
21326
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
21327
|
+
- **Related:** [SEC-NNN](../${paths.requirementCategoryDirs.security}/SEC-NNN-slug.md)
|
|
21299
21328
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21300
21329
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
21301
21330
|
|
|
@@ -21331,7 +21360,7 @@ Other business requirements, external factors, or organizational decisions this
|
|
|
21331
21360
|
|---|---|---|
|
|
21332
21361
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21333
21362
|
`;
|
|
21334
|
-
var
|
|
21363
|
+
var templateFr = (paths) => `---
|
|
21335
21364
|
title: "FR-NNN: [Functional Requirement Title]"
|
|
21336
21365
|
---
|
|
21337
21366
|
|
|
@@ -21432,9 +21461,9 @@ What data is created, read, updated, or deleted by this feature. Reference DR do
|
|
|
21432
21461
|
|
|
21433
21462
|
## Traceability
|
|
21434
21463
|
|
|
21435
|
-
- **Implements:** [BR-NNN](
|
|
21436
|
-
- **Constrained by:** [NFR-NNN](
|
|
21437
|
-
- **Related:** [INT-NNN](
|
|
21464
|
+
- **Implements:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
21465
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
21466
|
+
- **Related:** [INT-NNN](../${paths.requirementCategoryDirs.integration}/INT-NNN-slug.md)
|
|
21438
21467
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21439
21468
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
21440
21469
|
|
|
@@ -21470,7 +21499,7 @@ What data is created, read, updated, or deleted by this feature. Reference DR do
|
|
|
21470
21499
|
|---|---|---|
|
|
21471
21500
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21472
21501
|
`;
|
|
21473
|
-
var
|
|
21502
|
+
var templateNfr = (paths) => `---
|
|
21474
21503
|
title: "NFR-NNN: [Non-Functional Requirement Title]"
|
|
21475
21504
|
---
|
|
21476
21505
|
|
|
@@ -21532,9 +21561,9 @@ How compliance with this requirement will be monitored in production. Reference
|
|
|
21532
21561
|
|
|
21533
21562
|
## Traceability
|
|
21534
21563
|
|
|
21535
|
-
- **Supports:** [BR-NNN](
|
|
21536
|
-
- **Constrains:** [FR-NNN](
|
|
21537
|
-
- **Monitored by:** [OPS-NNN](
|
|
21564
|
+
- **Supports:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
21565
|
+
- **Constrains:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
21566
|
+
- **Monitored by:** [OPS-NNN](../${paths.requirementCategoryDirs.operational}/OPS-NNN-slug.md)
|
|
21538
21567
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21539
21568
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
21540
21569
|
|
|
@@ -21570,7 +21599,7 @@ How compliance with this requirement will be monitored in production. Reference
|
|
|
21570
21599
|
|---|---|---|
|
|
21571
21600
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21572
21601
|
`;
|
|
21573
|
-
var
|
|
21602
|
+
var templateTr = (paths) => `---
|
|
21574
21603
|
title: "TR-NNN: [Technical Requirement Title]"
|
|
21575
21604
|
---
|
|
21576
21605
|
|
|
@@ -21683,9 +21712,9 @@ Other technologies this choice interacts with, and any known compatibility const
|
|
|
21683
21712
|
|
|
21684
21713
|
## Traceability
|
|
21685
21714
|
|
|
21686
|
-
- **Justified by:** [ADR-NNN](
|
|
21687
|
-
- **Supports:** [FR-NNN](
|
|
21688
|
-
- **Constrained by:** [NFR-NNN](
|
|
21715
|
+
- **Justified by:** [ADR-NNN](../${paths.requirementCategoryDirs.architecturalDecisions}/ADR-NNN-slug.md)
|
|
21716
|
+
- **Supports:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
21717
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
21689
21718
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21690
21719
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
21691
21720
|
|
|
@@ -21721,7 +21750,7 @@ Other technologies this choice interacts with, and any known compatibility const
|
|
|
21721
21750
|
|---|---|---|
|
|
21722
21751
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21723
21752
|
`;
|
|
21724
|
-
var
|
|
21753
|
+
var templateAdr = (paths) => `---
|
|
21725
21754
|
title: "ADR-NNN: [Decision Title]"
|
|
21726
21755
|
---
|
|
21727
21756
|
|
|
@@ -21811,8 +21840,8 @@ High-level guidance for implementing this decision. Detailed implementation goes
|
|
|
21811
21840
|
|
|
21812
21841
|
## Traceability
|
|
21813
21842
|
|
|
21814
|
-
- **Supports:** [BR-NNN](
|
|
21815
|
-
- **Implemented by:** [TR-NNN](
|
|
21843
|
+
- **Supports:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
21844
|
+
- **Implemented by:** [TR-NNN](../${paths.requirementCategoryDirs.technical}/TR-NNN-slug.md)
|
|
21816
21845
|
- **Related:** [ADR-NNN](ADR-NNN-slug.md)
|
|
21817
21846
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21818
21847
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
@@ -21849,7 +21878,7 @@ High-level guidance for implementing this decision. Detailed implementation goes
|
|
|
21849
21878
|
|---|---|---|
|
|
21850
21879
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21851
21880
|
`;
|
|
21852
|
-
var
|
|
21881
|
+
var templateSec = (paths) => `---
|
|
21853
21882
|
title: "SEC-NNN: [Security Requirement Title]"
|
|
21854
21883
|
---
|
|
21855
21884
|
|
|
@@ -21921,10 +21950,10 @@ How compliance with this security requirement will be verified.
|
|
|
21921
21950
|
|
|
21922
21951
|
## Traceability
|
|
21923
21952
|
|
|
21924
|
-
- **Protects:** [FR-NNN](
|
|
21925
|
-
- **Constrained by:** [NFR-NNN](
|
|
21926
|
-
- **Implements:** [BR-NNN](
|
|
21927
|
-
- **Related data:** [DR-NNN](
|
|
21953
|
+
- **Protects:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
21954
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
21955
|
+
- **Implements:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
21956
|
+
- **Related data:** [DR-NNN](../${paths.requirementCategoryDirs.data}/DR-NNN-slug.md)
|
|
21928
21957
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
21929
21958
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
21930
21959
|
|
|
@@ -21960,7 +21989,7 @@ How compliance with this security requirement will be verified.
|
|
|
21960
21989
|
|---|---|---|
|
|
21961
21990
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
21962
21991
|
`;
|
|
21963
|
-
var
|
|
21992
|
+
var templateDr = (paths) => `---
|
|
21964
21993
|
title: "DR-NNN: [Data Requirement Title]"
|
|
21965
21994
|
---
|
|
21966
21995
|
|
|
@@ -22036,9 +22065,9 @@ How this data is classified and what handling rules apply based on that classifi
|
|
|
22036
22065
|
|
|
22037
22066
|
## Traceability
|
|
22038
22067
|
|
|
22039
|
-
- **Supports:** [FR-NNN](
|
|
22040
|
-
- **Protected by:** [SEC-NNN](
|
|
22041
|
-
- **Stored per:** [TR-NNN](
|
|
22068
|
+
- **Supports:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
22069
|
+
- **Protected by:** [SEC-NNN](../${paths.requirementCategoryDirs.security}/SEC-NNN-slug.md)
|
|
22070
|
+
- **Stored per:** [TR-NNN](../${paths.requirementCategoryDirs.technical}/TR-NNN-slug.md)
|
|
22042
22071
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
22043
22072
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
22044
22073
|
|
|
@@ -22074,7 +22103,7 @@ How this data is classified and what handling rules apply based on that classifi
|
|
|
22074
22103
|
|---|---|---|
|
|
22075
22104
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
22076
22105
|
`;
|
|
22077
|
-
var
|
|
22106
|
+
var templateInt = (paths) => `---
|
|
22078
22107
|
title: "INT-NNN: [Integration Requirement Title]"
|
|
22079
22108
|
---
|
|
22080
22109
|
|
|
@@ -22167,9 +22196,9 @@ What happens when this integration is unavailable. How does the system degrade g
|
|
|
22167
22196
|
|
|
22168
22197
|
## Traceability
|
|
22169
22198
|
|
|
22170
|
-
- **Enables:** [FR-NNN](
|
|
22171
|
-
- **Constrained by:** [NFR-NNN](
|
|
22172
|
-
- **Secured by:** [SEC-NNN](
|
|
22199
|
+
- **Enables:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
22200
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
22201
|
+
- **Secured by:** [SEC-NNN](../${paths.requirementCategoryDirs.security}/SEC-NNN-slug.md)
|
|
22173
22202
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
22174
22203
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
22175
22204
|
|
|
@@ -22205,7 +22234,7 @@ What happens when this integration is unavailable. How does the system degrade g
|
|
|
22205
22234
|
|---|---|---|
|
|
22206
22235
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
22207
22236
|
`;
|
|
22208
|
-
var
|
|
22237
|
+
var templateOps = (paths) => `---
|
|
22209
22238
|
title: "OPS-NNN: [Operational Requirement Title]"
|
|
22210
22239
|
---
|
|
22211
22240
|
|
|
@@ -22281,9 +22310,9 @@ If this applies to an existing system, document the current operational posture.
|
|
|
22281
22310
|
|
|
22282
22311
|
## Traceability
|
|
22283
22312
|
|
|
22284
|
-
- **Monitors:** [NFR-NNN](
|
|
22285
|
-
- **Supports:** [BR-NNN](
|
|
22286
|
-
- **Uses:** [TR-NNN](
|
|
22313
|
+
- **Monitors:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
22314
|
+
- **Supports:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
22315
|
+
- **Uses:** [TR-NNN](../${paths.requirementCategoryDirs.technical}/TR-NNN-slug.md)
|
|
22287
22316
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
22288
22317
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
22289
22318
|
|
|
@@ -22319,7 +22348,7 @@ If this applies to an existing system, document the current operational posture.
|
|
|
22319
22348
|
|---|---|---|
|
|
22320
22349
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
22321
22350
|
`;
|
|
22322
|
-
var
|
|
22351
|
+
var templateUx = (paths) => `---
|
|
22323
22352
|
title: "UX-NNN: [UX Requirement Title]"
|
|
22324
22353
|
---
|
|
22325
22354
|
|
|
@@ -22397,9 +22426,9 @@ Reference to the project's design system, component library, or style guide if o
|
|
|
22397
22426
|
|
|
22398
22427
|
## Traceability
|
|
22399
22428
|
|
|
22400
|
-
- **Enhances:** [FR-NNN](
|
|
22401
|
-
- **Constrained by:** [NFR-NNN](
|
|
22402
|
-
- **Supports:** [BR-NNN](
|
|
22429
|
+
- **Enhances:** [FR-NNN](../${paths.requirementCategoryDirs.functional}/FR-NNN-slug.md)
|
|
22430
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
22431
|
+
- **Supports:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
22403
22432
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
22404
22433
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
22405
22434
|
|
|
@@ -22435,7 +22464,7 @@ Reference to the project's design system, component library, or style guide if o
|
|
|
22435
22464
|
|---|---|---|
|
|
22436
22465
|
| YYYY-MM-DD | [Name] | Initial draft |
|
|
22437
22466
|
`;
|
|
22438
|
-
var
|
|
22467
|
+
var templateMt = (paths) => `---
|
|
22439
22468
|
title: "MT-NNN: [Multi-Tenancy Requirement Title]"
|
|
22440
22469
|
---
|
|
22441
22470
|
|
|
@@ -22514,9 +22543,9 @@ How the system prevents one tenant from degrading the experience of others.
|
|
|
22514
22543
|
|
|
22515
22544
|
## Traceability
|
|
22516
22545
|
|
|
22517
|
-
- **Implements:** [BR-NNN](
|
|
22518
|
-
- **Secured by:** [SEC-NNN](
|
|
22519
|
-
- **Constrained by:** [NFR-NNN](
|
|
22546
|
+
- **Implements:** [BR-NNN](../${paths.requirementCategoryDirs.business}/BR-NNN-slug.md)
|
|
22547
|
+
- **Secured by:** [SEC-NNN](../${paths.requirementCategoryDirs.security}/SEC-NNN-slug.md)
|
|
22548
|
+
- **Constrained by:** [NFR-NNN](../${paths.requirementCategoryDirs.nonFunctional}/NFR-NNN-slug.md)
|
|
22520
22549
|
- **Depends on (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [platform/industry requirement this depends on]
|
|
22521
22550
|
- **Enables (cross-tier):** [XX-NNN](../category/XX-NNN-slug.md) \u2014 [customer-workflow/consumer-app requirement this enables]
|
|
22522
22551
|
|
|
@@ -22587,7 +22616,7 @@ Use [\`_template-{PREFIX}.md\`](../templates/_template-{PREFIX}.md) for all new
|
|
|
22587
22616
|
- Every document must include YAML frontmatter with a \`title\` field
|
|
22588
22617
|
- Every document must include a \`## Traceability\` section
|
|
22589
22618
|
`;
|
|
22590
|
-
var
|
|
22619
|
+
var templateRequirementsReadme = (paths) => `---
|
|
22591
22620
|
title: "[Project Name] \u2014 Requirements Documentation"
|
|
22592
22621
|
---
|
|
22593
22622
|
|
|
@@ -22597,17 +22626,17 @@ This directory contains the structured requirements taxonomy for [Project Name].
|
|
|
22597
22626
|
|
|
22598
22627
|
| Category | Prefix | Directory | Purpose |
|
|
22599
22628
|
|---|---|---|---|
|
|
22600
|
-
| Business Requirements | BR | [
|
|
22601
|
-
| Functional Requirements | FR | [
|
|
22602
|
-
| Non-Functional Requirements | NFR | [
|
|
22603
|
-
| Technical Requirements | TR | [
|
|
22604
|
-
| Architectural Decisions | ADR | [
|
|
22605
|
-
| Security & Compliance | SEC | [
|
|
22606
|
-
| Data Requirements | DR | [
|
|
22607
|
-
| Integration Requirements | INT | [
|
|
22608
|
-
| Operational Requirements | OPS | [
|
|
22609
|
-
| UX Requirements | UX | [
|
|
22610
|
-
| Multi-Tenancy & Licensing | MT | [
|
|
22629
|
+
| Business Requirements | BR | [\`${paths.requirementCategoryDirs.business}/\`](${paths.requirementCategoryDirs.business}/README.md) | Strategic intent, stakeholders, success metrics |
|
|
22630
|
+
| Functional Requirements | FR | [\`${paths.requirementCategoryDirs.functional}/\`](${paths.requirementCategoryDirs.functional}/README.md) | User stories, flows, acceptance criteria |
|
|
22631
|
+
| Non-Functional Requirements | NFR | [\`${paths.requirementCategoryDirs.nonFunctional}/\`](${paths.requirementCategoryDirs.nonFunctional}/README.md) | Performance, scalability, availability targets |
|
|
22632
|
+
| Technical Requirements | TR | [\`${paths.requirementCategoryDirs.technical}/\`](${paths.requirementCategoryDirs.technical}/README.md) | Technology choices, framework decisions |
|
|
22633
|
+
| Architectural Decisions | ADR | [\`${paths.requirementCategoryDirs.architecturalDecisions}/\`](${paths.requirementCategoryDirs.architecturalDecisions}/README.md) | Context, decision, consequences (standard ADR format) |
|
|
22634
|
+
| Security & Compliance | SEC | [\`${paths.requirementCategoryDirs.security}/\`](${paths.requirementCategoryDirs.security}/README.md) | Auth, encryption, audit, regulatory |
|
|
22635
|
+
| Data Requirements | DR | [\`${paths.requirementCategoryDirs.data}/\`](${paths.requirementCategoryDirs.data}/README.md) | Data models, retention, classification, RPO/RTO |
|
|
22636
|
+
| Integration Requirements | INT | [\`${paths.requirementCategoryDirs.integration}/\`](${paths.requirementCategoryDirs.integration}/README.md) | APIs, third-party systems, protocols |
|
|
22637
|
+
| Operational Requirements | OPS | [\`${paths.requirementCategoryDirs.operational}/\`](${paths.requirementCategoryDirs.operational}/README.md) | Deployment, monitoring, alerting, logging |
|
|
22638
|
+
| UX Requirements | UX | [\`${paths.requirementCategoryDirs.ux}/\`](${paths.requirementCategoryDirs.ux}/README.md) | Accessibility, responsiveness, i18n |
|
|
22639
|
+
| Multi-Tenancy & Licensing | MT | [\`${paths.requirementCategoryDirs.multiTenancy}/\`](${paths.requirementCategoryDirs.multiTenancy}/README.md) | Tenant isolation, feature gating, billing |
|
|
22611
22640
|
|
|
22612
22641
|
Each directory contains a \`README.md\` with detailed guidance on what belongs in that category (and what doesn't), common disambiguation tips, and project-specific context. When unsure where a requirement belongs, start with the category README.
|
|
22613
22642
|
|
|
@@ -22673,9 +22702,9 @@ Example:
|
|
|
22673
22702
|
\`\`\`markdown
|
|
22674
22703
|
## Traceability
|
|
22675
22704
|
|
|
22676
|
-
- **Implements:** [FR-001](
|
|
22677
|
-
- **Constrained by:** [NFR-001](
|
|
22678
|
-
- **Related:** [SEC-001](
|
|
22705
|
+
- **Implements:** [FR-001](../${paths.requirementCategoryDirs.functional}/FR-001-user-registration.md)
|
|
22706
|
+
- **Constrained by:** [NFR-001](../${paths.requirementCategoryDirs.nonFunctional}/NFR-001-uptime-sla.md)
|
|
22707
|
+
- **Related:** [SEC-001](../${paths.requirementCategoryDirs.security}/SEC-001-multi-tenant-auth.md)
|
|
22679
22708
|
\`\`\`
|
|
22680
22709
|
|
|
22681
22710
|
### Link Types
|
|
@@ -23069,35 +23098,70 @@ var WRITE_REQUIREMENT_EVALS_JSON = JSON.stringify(
|
|
|
23069
23098
|
null,
|
|
23070
23099
|
2
|
|
23071
23100
|
);
|
|
23072
|
-
|
|
23073
|
-
|
|
23074
|
-
|
|
23075
|
-
|
|
23076
|
-
|
|
23077
|
-
|
|
23078
|
-
|
|
23079
|
-
|
|
23080
|
-
|
|
23081
|
-
|
|
23082
|
-
|
|
23083
|
-
|
|
23084
|
-
|
|
23085
|
-
|
|
23086
|
-
|
|
23087
|
-
|
|
23088
|
-
|
|
23089
|
-
|
|
23090
|
-
|
|
23091
|
-
|
|
23092
|
-
|
|
23093
|
-
|
|
23094
|
-
|
|
23095
|
-
|
|
23096
|
-
|
|
23097
|
-
|
|
23098
|
-
|
|
23099
|
-
|
|
23100
|
-
|
|
23101
|
+
function buildRequirementsWriterReferenceFiles(paths) {
|
|
23102
|
+
return [
|
|
23103
|
+
{
|
|
23104
|
+
path: "_references/templates/_template-BR.md",
|
|
23105
|
+
content: templateBr(paths)
|
|
23106
|
+
},
|
|
23107
|
+
{
|
|
23108
|
+
path: "_references/templates/_template-FR.md",
|
|
23109
|
+
content: templateFr(paths)
|
|
23110
|
+
},
|
|
23111
|
+
{
|
|
23112
|
+
path: "_references/templates/_template-NFR.md",
|
|
23113
|
+
content: templateNfr(paths)
|
|
23114
|
+
},
|
|
23115
|
+
{
|
|
23116
|
+
path: "_references/templates/_template-TR.md",
|
|
23117
|
+
content: templateTr(paths)
|
|
23118
|
+
},
|
|
23119
|
+
{
|
|
23120
|
+
path: "_references/templates/_template-ADR.md",
|
|
23121
|
+
content: templateAdr(paths)
|
|
23122
|
+
},
|
|
23123
|
+
{
|
|
23124
|
+
path: "_references/templates/_template-SEC.md",
|
|
23125
|
+
content: templateSec(paths)
|
|
23126
|
+
},
|
|
23127
|
+
{
|
|
23128
|
+
path: "_references/templates/_template-DR.md",
|
|
23129
|
+
content: templateDr(paths)
|
|
23130
|
+
},
|
|
23131
|
+
{
|
|
23132
|
+
path: "_references/templates/_template-INT.md",
|
|
23133
|
+
content: templateInt(paths)
|
|
23134
|
+
},
|
|
23135
|
+
{
|
|
23136
|
+
path: "_references/templates/_template-OPS.md",
|
|
23137
|
+
content: templateOps(paths)
|
|
23138
|
+
},
|
|
23139
|
+
{
|
|
23140
|
+
path: "_references/templates/_template-UX.md",
|
|
23141
|
+
content: templateUx(paths)
|
|
23142
|
+
},
|
|
23143
|
+
{
|
|
23144
|
+
path: "_references/templates/_template-MT.md",
|
|
23145
|
+
content: templateMt(paths)
|
|
23146
|
+
},
|
|
23147
|
+
{
|
|
23148
|
+
path: "_references/templates/_template-category-README.md",
|
|
23149
|
+
content: TEMPLATE_CATEGORY_README
|
|
23150
|
+
},
|
|
23151
|
+
{
|
|
23152
|
+
path: "_references/templates/_template-requirements-README.md",
|
|
23153
|
+
content: templateRequirementsReadme(paths)
|
|
23154
|
+
},
|
|
23155
|
+
{
|
|
23156
|
+
path: "_references/standards-and-frameworks.md",
|
|
23157
|
+
content: STANDARDS_AND_FRAMEWORKS
|
|
23158
|
+
},
|
|
23159
|
+
{
|
|
23160
|
+
path: "evals/evals.json",
|
|
23161
|
+
content: WRITE_REQUIREMENT_EVALS_JSON
|
|
23162
|
+
}
|
|
23163
|
+
];
|
|
23164
|
+
}
|
|
23101
23165
|
function buildRequirementsWriterSubAgent(paths) {
|
|
23102
23166
|
return {
|
|
23103
23167
|
name: "requirements-writer",
|
|
@@ -23297,13 +23361,13 @@ function buildRequirementsWriterSubAgent(paths) {
|
|
|
23297
23361
|
"1. Write the requirement itself (FR, DR, INT, OPS, etc.) with full",
|
|
23298
23362
|
" detail.",
|
|
23299
23363
|
"2. Where the requirement needs a technology decision, add a note:",
|
|
23300
|
-
|
|
23364
|
+
` *"Technology selection pending \u2014 see [ADR-NNN](../${paths.requirementCategoryDirs.architecturalDecisions}/ADR-NNN-slug.md)"*.`,
|
|
23301
23365
|
"3. Create the corresponding ADR or TR as `Proposed` with options,",
|
|
23302
23366
|
" pros/cons, and recommendation.",
|
|
23303
23367
|
'4. In the ADR/TR open items, add: *"Human decision required.',
|
|
23304
23368
|
' Dependent requirements: [list]"*.',
|
|
23305
23369
|
"5. In the original requirement's open items, add a cross-reference:",
|
|
23306
|
-
|
|
23370
|
+
` *"Blocked by [ADR-NNN](../${paths.requirementCategoryDirs.architecturalDecisions}/ADR-NNN-slug.md) \u2014`,
|
|
23307
23371
|
' technology selection pending human review."*',
|
|
23308
23372
|
"",
|
|
23309
23373
|
"This creates a clear chain: the requirement is understood, the",
|
|
@@ -23390,9 +23454,9 @@ function buildRequirementsWriterSubAgent(paths) {
|
|
|
23390
23454
|
"```markdown",
|
|
23391
23455
|
"## Traceability",
|
|
23392
23456
|
"",
|
|
23393
|
-
|
|
23394
|
-
|
|
23395
|
-
|
|
23457
|
+
`- **Implements:** [BR-001](../${paths.requirementCategoryDirs.business}/BR-001-self-service-onboarding.md)`,
|
|
23458
|
+
`- **Constrained by:** [NFR-001](../${paths.requirementCategoryDirs.nonFunctional}/NFR-001-api-response-times.md)`,
|
|
23459
|
+
`- **Related:** [SEC-001](../${paths.requirementCategoryDirs.security}/SEC-001-authentication-framework.md)`,
|
|
23396
23460
|
"```",
|
|
23397
23461
|
"",
|
|
23398
23462
|
"### Link Types",
|
|
@@ -23452,7 +23516,7 @@ function buildRequirementsWriterSubAgent(paths) {
|
|
|
23452
23516
|
"",
|
|
23453
23517
|
"Number each item within its subsection. Assign a priority. Call out",
|
|
23454
23518
|
"interdependencies with open items in other documents using the",
|
|
23455
|
-
|
|
23519
|
+
`format: \`-> Depends on: [FR-001 Open Item #2](../${paths.requirementCategoryDirs.functional}/FR-001-slug.md#open-items)\`.`,
|
|
23456
23520
|
"",
|
|
23457
23521
|
"The `## Open Items` section is **not optional** \u2014 it appears in every",
|
|
23458
23522
|
'document, even if a subsection is empty (write "None identified.").',
|
|
@@ -23711,7 +23775,7 @@ function buildWriteRequirementSkill(paths, issueDefaults) {
|
|
|
23711
23775
|
context: "fork",
|
|
23712
23776
|
agent: "requirements-writer",
|
|
23713
23777
|
platforms: { cursor: { exclude: true } },
|
|
23714
|
-
referenceFiles:
|
|
23778
|
+
referenceFiles: buildRequirementsWriterReferenceFiles(paths),
|
|
23715
23779
|
instructions: [
|
|
23716
23780
|
"# Write Requirement",
|
|
23717
23781
|
"",
|
|
@@ -24023,7 +24087,7 @@ function buildRequirementsReviewerSubAgent(paths, issueDefaults) {
|
|
|
24023
24087
|
"1. **Full audit** \u2014 every requirement document under",
|
|
24024
24088
|
" `<REQUIREMENTS_ROOT>` across all categories",
|
|
24025
24089
|
"2. **Category audit** \u2014 every document in one category directory",
|
|
24026
|
-
|
|
24090
|
+
` (e.g., all FRs under \`<REQUIREMENTS_ROOT>/${paths.requirementCategoryDirs.functional}/\`)`,
|
|
24027
24091
|
"3. **Single document** \u2014 one specific requirement file",
|
|
24028
24092
|
"4. **Targeted check** \u2014 one or more checks from the catalog below,",
|
|
24029
24093
|
' run across the documents in scope (e.g., "check all traceability',
|
|
@@ -24451,7 +24515,7 @@ function buildRequirementsReviewerSubAgent(paths, issueDefaults) {
|
|
|
24451
24515
|
"",
|
|
24452
24516
|
"Each finding must cite the file path and the specific check that",
|
|
24453
24517
|
'produced it (e.g., "Check 4: Cross-Reference Integrity \u2014 target',
|
|
24454
|
-
|
|
24518
|
+
`file \`../${paths.requirementCategoryDirs.security}/SEC-007-audit-logs.md\` does not exist on`,
|
|
24455
24519
|
'disk").',
|
|
24456
24520
|
"",
|
|
24457
24521
|
"---",
|
|
@@ -26065,13 +26129,13 @@ function buildSoftwareProfileAnalystSubAgent(paths, issueDefaults, tier) {
|
|
|
26065
26129
|
"",
|
|
26066
26130
|
"| Placeholder | Meaning | Default |",
|
|
26067
26131
|
"|-------------|---------|---------|",
|
|
26068
|
-
|
|
26132
|
+
`| \`<SOFTWARE_ROOT>\` | Root folder for software profiles | \`${paths.softwareRoot}/\` |`,
|
|
26069
26133
|
"| `<PROFILES_DIR>` | Final software profile files | `<SOFTWARE_ROOT>/profiles/` |",
|
|
26070
26134
|
"| `<NOTES_DIR>` | Research-notes files from Phase 1 | `<SOFTWARE_ROOT>/notes/` |",
|
|
26071
26135
|
"| `<MATRIX_FILE>` | Shared feature-matrix file | `<SOFTWARE_ROOT>/feature-matrix.md` |",
|
|
26072
26136
|
"| `<PRODUCT_SLUG>` | Short kebab-case slug identifying the product | derived from the product name |",
|
|
26073
|
-
|
|
26074
|
-
|
|
26137
|
+
`| \`<COMPANY_PROFILES_DIR>\` | Where existing company profiles live (for duplicate detection during followup) | \`${paths.companiesRoot}/profiles/\` |`,
|
|
26138
|
+
`| \`<PEOPLE_PROFILES_DIR>\` | Where existing people profiles live (for duplicate detection during followup) | \`${paths.peopleRoot}/profiles/\` |`,
|
|
26075
26139
|
`| \`<BCM_DOC_ROOT>\` | Root folder for BCM capability-model documents (used by Phase 4 to locate capabilities) | \`${paths.bcmRoot}/\` |`,
|
|
26076
26140
|
"| `<BCM_CAPABILITY_MAP>` | Capability-map file that lists the L1/L2/L3 hierarchy | `<BCM_DOC_ROOT>/capability-map.md` |",
|
|
26077
26141
|
"| `<UNMAPPED_THRESHOLD>` | Minimum number of unmapped features on a single profile that triggers a `bcm:outline` follow-up for that feature cluster | `1` (every unmapped feature triggers a `bcm:outline`) |",
|
|
@@ -26741,9 +26805,9 @@ function buildProfileSoftwareSkill(paths, issueDefaults) {
|
|
|
26741
26805
|
`If the project has no override in \`${paths.docsRoot}/project-context.md\` or`,
|
|
26742
26806
|
"`agentConfig.rules`, outputs land under:",
|
|
26743
26807
|
"",
|
|
26744
|
-
|
|
26745
|
-
|
|
26746
|
-
|
|
26808
|
+
`- \`${paths.softwareRoot}/notes/<slug>.notes.md\``,
|
|
26809
|
+
`- \`${paths.softwareRoot}/profiles/<slug>.md\``,
|
|
26810
|
+
`- \`${paths.softwareRoot}/feature-matrix.md\` (shared across all products)`,
|
|
26747
26811
|
"",
|
|
26748
26812
|
"## Steps",
|
|
26749
26813
|
"",
|
|
@@ -26829,7 +26893,7 @@ function buildMapSoftwareSkill(paths, issueDefaults) {
|
|
|
26829
26893
|
`- \`${paths.bcmRoot}/\` \u2014 BCM capability-model documents`,
|
|
26830
26894
|
`- \`${paths.bcmRoot}/capability-map.md\` \u2014 capability map`,
|
|
26831
26895
|
"",
|
|
26832
|
-
|
|
26896
|
+
`and writes back to \`${paths.softwareRoot}/profiles/<slug>.md\` under the`,
|
|
26833
26897
|
"`## Capability Mapping` section only. No other section of the",
|
|
26834
26898
|
"profile is rewritten.",
|
|
26835
26899
|
"",
|
|
@@ -28966,7 +29030,7 @@ var VERSION = {
|
|
|
28966
29030
|
*
|
|
28967
29031
|
* CLI and lib are versioned separately, so this is the lib version.
|
|
28968
29032
|
*/
|
|
28969
|
-
AWS_CDK_LIB_VERSION: "2.258.
|
|
29033
|
+
AWS_CDK_LIB_VERSION: "2.258.1",
|
|
28970
29034
|
/**
|
|
28971
29035
|
* Version of the AWS Constructs library to use.
|
|
28972
29036
|
*/
|
|
@@ -37497,6 +37561,7 @@ export {
|
|
|
37497
37561
|
DEFAULT_PROGRESS_FILES_FORMAT,
|
|
37498
37562
|
DEFAULT_PROGRESS_FILES_STALE_AFTER_HOURS,
|
|
37499
37563
|
DEFAULT_PROGRESS_FILES_STATE_DIR,
|
|
37564
|
+
DEFAULT_REQUIREMENT_CATEGORY_DIRS,
|
|
37500
37565
|
DEFAULT_REQUIRE_PRODUCT_CONTEXT,
|
|
37501
37566
|
DEFAULT_RESOLVED_ISSUE_DEFAULTS,
|
|
37502
37567
|
DEFAULT_SAMPLE_COMPILER_OPTIONS,
|