@codedrifters/configulator 0.0.261 → 0.0.262
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 +8 -7
- package/lib/index.d.ts +8 -7
- package/lib/index.js +350 -80
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +350 -80
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -14456,7 +14456,7 @@ var slackBundle = {
|
|
|
14456
14456
|
// src/agent/bundles/software-profile.ts
|
|
14457
14457
|
var softwareProfileAnalystSubAgent = {
|
|
14458
14458
|
name: "software-profile-analyst",
|
|
14459
|
-
description: "Researches a software product (competitor, adjacent, incumbent, enabler, infrastructure, or ecosystem-tool) from public sources, produces a structured markdown profile,
|
|
14459
|
+
description: "Researches a software product (competitor, adjacent, incumbent, enabler, infrastructure, or ecosystem-tool) from public sources, produces a structured markdown profile, contributes rows to a shared feature matrix ranked against configurable segment-importance weights, maps features back to the BCM capability model and flags unmapped features, then enqueues downstream `bcm:outline`, `company:research`, and `people:research` issues for new sub-capabilities, the vendor company, and primary-attribution founders/leaders surfaced during profiling. One product per session, tracked by software:* GitHub issue labels.",
|
|
14460
14460
|
model: AGENT_MODEL.POWERFUL,
|
|
14461
14461
|
maxTurns: 80,
|
|
14462
14462
|
platforms: { cursor: { exclude: true } },
|
|
@@ -14466,8 +14466,9 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14466
14466
|
"You research a single software product from public sources and write",
|
|
14467
14467
|
"a structured markdown profile. Each profile cycle runs across a small",
|
|
14468
14468
|
"sequence of GitHub issues \u2014 one per phase \u2014 and produces a single",
|
|
14469
|
-
"profile file on disk, a set of feature-matrix rows,
|
|
14470
|
-
"follow-up research
|
|
14469
|
+
"profile file on disk, a set of feature-matrix rows, a back-mapping",
|
|
14470
|
+
"onto the BCM capability model, and optional follow-up research",
|
|
14471
|
+
"issues for adjacent products.",
|
|
14471
14472
|
"",
|
|
14472
14473
|
"This agent is **domain-neutral**. It makes no assumptions about what",
|
|
14473
14474
|
"the consuming project sells, which industry it serves, or which",
|
|
@@ -14512,6 +14513,14 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14512
14513
|
" weights belong in `docs/src/content/docs/project-context.md` (or an override",
|
|
14513
14514
|
" passed in the issue body). This agent reads them; it never",
|
|
14514
14515
|
" invents them.",
|
|
14516
|
+
"8. **Map back to the capability model.** The BCM capability model is",
|
|
14517
|
+
" the single source of truth for what the business does. Every",
|
|
14518
|
+
" feature on every profile is mapped to the owning capability in the",
|
|
14519
|
+
" BCM tree during the map phase. Features that match nothing in the",
|
|
14520
|
+
" tree are candidates for new BCM sub-capabilities \u2014 they are",
|
|
14521
|
+
" flagged and handed off to the `bcm-writer` bundle via",
|
|
14522
|
+
" `bcm:outline` issues. This agent never authors BCM documents",
|
|
14523
|
+
" itself.",
|
|
14515
14524
|
"",
|
|
14516
14525
|
"---",
|
|
14517
14526
|
"",
|
|
@@ -14577,14 +14586,15 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14577
14586
|
"## State Machine Overview",
|
|
14578
14587
|
"",
|
|
14579
14588
|
"```",
|
|
14580
|
-
"\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\
|
|
14581
|
-
"\
|
|
14582
|
-
"\
|
|
14583
|
-
"\u2502
|
|
14584
|
-
"\
|
|
14585
|
-
"\
|
|
14586
|
-
"\
|
|
14587
|
-
"\
|
|
14589
|
+
"\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
|
|
14590
|
+
"\u25021.RESEARCH\u2502\u2500\u25B6\u25022.PROFILE \u2502\u2500\u25B6\u25023.MATRIX \u2502\u2500\u25B6\u25024.MAP \u2502\u2500\u25B6\u25025.FOLLOWUP\u2502",
|
|
14591
|
+
"\u2502Collect \u2502 \u2502Write the \u2502 \u2502Extract \u2502 \u2502Map each \u2502 \u2502Enqueue \u2502",
|
|
14592
|
+
"\u2502public \u2502 \u2502structured\u2502 \u2502feature \u2502 \u2502feature to\u2502 \u2502research \u2502",
|
|
14593
|
+
"\u2502sources \u2502 \u2502markdown \u2502 \u2502rows and \u2502 \u2502BCM \u2502 \u2502for \u2502",
|
|
14594
|
+
"\u2502into \u2502 \u2502profile to\u2502 \u2502score \u2502 \u2502capability\u2502 \u2502adjacent \u2502",
|
|
14595
|
+
"\u2502bounded \u2502 \u2502<PROFILES>\u2502 \u2502against \u2502 \u2502and flag \u2502 \u2502products \u2502",
|
|
14596
|
+
"\u2502notes file\u2502 \u2502 \u2502 \u2502weights \u2502 \u2502gaps \u2502 \u2502surfaced \u2502",
|
|
14597
|
+
"\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
|
|
14588
14598
|
"```",
|
|
14589
14599
|
"",
|
|
14590
14600
|
"**Issue labels encode the phase:**",
|
|
@@ -14593,20 +14603,22 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14593
14603
|
"|-------|-------|-------------|",
|
|
14594
14604
|
"| `software:research` | 1. Research | Gather public sources. Write a bounded research-notes file. Create the profile issue. |",
|
|
14595
14605
|
"| `software:profile` | 2. Profile | Read the research notes. Write the structured profile to `<PROFILES_DIR>`. Create the matrix issue. |",
|
|
14596
|
-
"| `software:matrix` | 3. Matrix | Read the profile. Extract feature rows into `<MATRIX_FILE>`. Score against segment weights. Create the
|
|
14597
|
-
"| `software:
|
|
14606
|
+
"| `software:matrix` | 3. Matrix | Read the profile. Extract feature rows into `<MATRIX_FILE>`. Score against segment weights. Create the map issue. |",
|
|
14607
|
+
"| `software:map` | 4. Map | Read the profile and matrix rows. Map each feature to the owning BCM capability. Write the mapping back onto the profile. Enqueue `bcm:outline` follow-ups for unmapped features above the configured threshold. Create the followup issue. |",
|
|
14608
|
+
"| `software:followup` | 5. Followup | Read the profile. Enqueue software-research issues for adjacent products surfaced in the profile. |",
|
|
14598
14609
|
"",
|
|
14599
14610
|
"All issues also carry `type:software-profile` and a `status:*` label.",
|
|
14600
14611
|
"",
|
|
14601
14612
|
"**Issue count per product cycle:** 1 research + 1 profile + 1 matrix +",
|
|
14602
|
-
"0\u20131 followup = **
|
|
14603
|
-
"the profile did not surface any adjacent product worth
|
|
14613
|
+
"1 map + 0\u20131 followup = **4\u20135 sessions**. The followup phase is",
|
|
14614
|
+
"skipped when the profile did not surface any adjacent product worth",
|
|
14615
|
+
"researching.",
|
|
14604
14616
|
"",
|
|
14605
14617
|
"**Shortened paths:**",
|
|
14606
14618
|
"- Research phase determines the product is out of scope (not",
|
|
14607
14619
|
" relevant, insufficient public material) \u2192 research issue closes",
|
|
14608
14620
|
" with a justification and no downstream issues are created \u2192 **1 session**.",
|
|
14609
|
-
"- Narrow product with no adjacent candidates \u2192 **
|
|
14621
|
+
"- Narrow product with no adjacent candidates \u2192 **4 sessions**.",
|
|
14610
14622
|
"",
|
|
14611
14623
|
"---",
|
|
14612
14624
|
"",
|
|
@@ -14625,11 +14637,25 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14625
14637
|
"| `<PRODUCT_SLUG>` | Short kebab-case slug identifying the product | derived from the product name |",
|
|
14626
14638
|
"| `<COMPANY_PROFILES_DIR>` | Where existing company profiles live (for duplicate detection during followup) | `docs/companies/profiles/` |",
|
|
14627
14639
|
"| `<PEOPLE_PROFILES_DIR>` | Where existing people profiles live (for duplicate detection during followup) | `docs/people/profiles/` |",
|
|
14640
|
+
`| \`<BCM_DOC_ROOT>\` | Root folder for BCM capability-model documents (used by Phase 4 to locate capabilities) | \`${DEFAULT_AGENT_PATHS.bcmRoot}/\` |`,
|
|
14641
|
+
"| `<BCM_CAPABILITY_MAP>` | Capability-map file that lists the L1/L2/L3 hierarchy | `<BCM_DOC_ROOT>/capability-map.md` |",
|
|
14642
|
+
"| `<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`) |",
|
|
14628
14643
|
"",
|
|
14629
14644
|
"If `docs/src/content/docs/project-context.md` specifies a different software-research",
|
|
14630
14645
|
"tree (for example by reusing the research-pipeline deliverables",
|
|
14631
14646
|
"folder), prefer that. Otherwise fall back to the defaults above.",
|
|
14632
14647
|
"",
|
|
14648
|
+
"The `<BCM_DOC_ROOT>` default above is sourced from configulator's",
|
|
14649
|
+
"`DEFAULT_AGENT_PATHS.bcmRoot`. If the consuming project's capability",
|
|
14650
|
+
"model lives somewhere else, pass an override in the invoking issue",
|
|
14651
|
+
"body or extend this rule in `agentConfig.rules` \u2014 reading",
|
|
14652
|
+
"`agentConfig.paths.bcmRoot` directly is not currently wired through",
|
|
14653
|
+
"to rule content at synth time. Override `<UNMAPPED_THRESHOLD>` the",
|
|
14654
|
+
"same way when the default (one `bcm:outline` per unmapped feature)",
|
|
14655
|
+
"is too noisy \u2014 for example, raise it to `3` to require at least",
|
|
14656
|
+
"three unmapped features on a single profile before any follow-ups",
|
|
14657
|
+
"are filed.",
|
|
14658
|
+
"",
|
|
14633
14659
|
"---",
|
|
14634
14660
|
"",
|
|
14635
14661
|
"## Agent Loop",
|
|
@@ -14638,7 +14664,7 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14638
14664
|
"",
|
|
14639
14665
|
"1. Claim one open `type:software-profile` issue using phase priority:",
|
|
14640
14666
|
" `software:research` > `software:profile` > `software:matrix` >",
|
|
14641
|
-
" `software:followup`.",
|
|
14667
|
+
" `software:map` > `software:followup`.",
|
|
14642
14668
|
"2. Transition `status:ready` \u2192 `status:in-progress` and create the",
|
|
14643
14669
|
" branch per your project's branch-naming convention.",
|
|
14644
14670
|
"3. Execute the phase handler that matches the issue's `software:*`",
|
|
@@ -14773,7 +14799,12 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14773
14799
|
"",
|
|
14774
14800
|
" ## Features",
|
|
14775
14801
|
" <grouped bullet list of notable features, each cited. These become",
|
|
14776
|
-
" the rows in the feature matrix during Phase 3
|
|
14802
|
+
" the rows in the feature matrix during Phase 3 and the rows of the",
|
|
14803
|
+
" capability mapping during Phase 4.>",
|
|
14804
|
+
"",
|
|
14805
|
+
" ## Capability Mapping",
|
|
14806
|
+
" _To be filled in during Phase 4 (Map). Leave as",
|
|
14807
|
+
" `_Pending capability mapping \u2014 filled in Phase 4._` until then._",
|
|
14777
14808
|
"",
|
|
14778
14809
|
" ## Technology Signals",
|
|
14779
14810
|
" <stack hints from docs, integrations, and public engineering",
|
|
@@ -14879,18 +14910,141 @@ var softwareProfileAnalystSubAgent = {
|
|
|
14879
14910
|
"",
|
|
14880
14911
|
"5. **Update the matrix front-matter** (`updated: YYYY-MM-DD`).",
|
|
14881
14912
|
"",
|
|
14882
|
-
"6. **
|
|
14883
|
-
" `
|
|
14884
|
-
"
|
|
14885
|
-
"
|
|
14886
|
-
"
|
|
14913
|
+
"6. **Create the `software:map` issue** with",
|
|
14914
|
+
" `Depends on: #<matrix-issue>`. Its body references the profile",
|
|
14915
|
+
" path, the matrix file path, the BCM document root",
|
|
14916
|
+
" (`<BCM_DOC_ROOT>`), the capability map file",
|
|
14917
|
+
" (`<BCM_CAPABILITY_MAP>` if it exists), and the unmapped-feature",
|
|
14918
|
+
" threshold (`<UNMAPPED_THRESHOLD>`). The map phase always runs \u2014",
|
|
14919
|
+
" every profile is mapped back to the capability model regardless",
|
|
14920
|
+
" of whether any adjacent products were surfaced.",
|
|
14887
14921
|
"",
|
|
14888
14922
|
"7. **Commit and push** the matrix file (and any profile updates).",
|
|
14889
14923
|
" Close the matrix issue.",
|
|
14890
14924
|
"",
|
|
14891
14925
|
"---",
|
|
14892
14926
|
"",
|
|
14893
|
-
"## Phase 4:
|
|
14927
|
+
"## Phase 4: Map (`software:map`)",
|
|
14928
|
+
"",
|
|
14929
|
+
"**Goal:** Map each feature on the profile back to the owning",
|
|
14930
|
+
"capability in the BCM capability model, write the mapping onto the",
|
|
14931
|
+
"profile, and enqueue `bcm:outline` follow-ups for features that do",
|
|
14932
|
+
"not match any existing capability.",
|
|
14933
|
+
"",
|
|
14934
|
+
"**Budget:** No new web searches. Read the profile, matrix, and BCM",
|
|
14935
|
+
"tree; write the mapping section onto the profile; open",
|
|
14936
|
+
"`bcm:outline` issues for the gaps.",
|
|
14937
|
+
"",
|
|
14938
|
+
"### Capability Mapping Format",
|
|
14939
|
+
"",
|
|
14940
|
+
"The mapping lives in the `## Capability Mapping` section of the",
|
|
14941
|
+
"profile file. It is a table with one row per feature and explicit",
|
|
14942
|
+
"evidence for each mapping decision:",
|
|
14943
|
+
"",
|
|
14944
|
+
"```markdown",
|
|
14945
|
+
"## Capability Mapping",
|
|
14946
|
+
"",
|
|
14947
|
+
"_Mapped against `<BCM_CAPABILITY_MAP>` on YYYY-MM-DD._",
|
|
14948
|
+
"",
|
|
14949
|
+
"| feature | capability (id \xB7 name) | tier | confidence | notes |",
|
|
14950
|
+
"|---------|-----------------------|------|------------|-------|",
|
|
14951
|
+
"| <feature> | <bcm-id> \xB7 <capability name> | L1/L2/L3 | high/medium/low | <evidence or rationale> |",
|
|
14952
|
+
"| <feature> | _unmapped_ | \u2014 | \u2014 | Candidate for new BCM sub-capability. Tracked in #<bcm-outline-issue> |",
|
|
14953
|
+
"```",
|
|
14954
|
+
"",
|
|
14955
|
+
"Confidence levels:",
|
|
14956
|
+
"",
|
|
14957
|
+
"- **high** \u2014 the feature's jobs-to-be-done clearly match the",
|
|
14958
|
+
" capability's definition and business object.",
|
|
14959
|
+
"- **medium** \u2014 the feature plausibly maps to the capability, but the",
|
|
14960
|
+
" match is partial (e.g. the feature covers only one facet of the",
|
|
14961
|
+
" capability, or the capability's definition is broader than the",
|
|
14962
|
+
" feature).",
|
|
14963
|
+
"- **low** \u2014 the feature overlaps the capability only tangentially.",
|
|
14964
|
+
" Prefer `_unmapped_` over a low-confidence match when the feature",
|
|
14965
|
+
" is a genuine capability gap rather than a near-miss.",
|
|
14966
|
+
"",
|
|
14967
|
+
"### Steps",
|
|
14968
|
+
"",
|
|
14969
|
+
"1. **Load the BCM tree.** Read `<BCM_CAPABILITY_MAP>` if it exists,",
|
|
14970
|
+
" otherwise walk `<BCM_DOC_ROOT>/` for capability-model documents.",
|
|
14971
|
+
" Build an in-session index of `{ id, name, tier, business_object }`",
|
|
14972
|
+
" entries. If the tree is empty (no BCM documents yet), note the",
|
|
14973
|
+
" gap in the profile's `## Risks / Open Questions`, skip the",
|
|
14974
|
+
" per-feature mapping, and mark **every** feature as a candidate",
|
|
14975
|
+
" for a new sub-capability \u2014 subject to `<UNMAPPED_THRESHOLD>`.",
|
|
14976
|
+
"",
|
|
14977
|
+
"2. **Read the profile file** and extract the `## Features` bullets.",
|
|
14978
|
+
" Each bullet is one row in the mapping table.",
|
|
14979
|
+
"",
|
|
14980
|
+
"3. **Map each feature to the best-fit capability.** Preferred",
|
|
14981
|
+
" algorithm:",
|
|
14982
|
+
" - Match against the capability's **business object** first (the",
|
|
14983
|
+
" thing the capability acts on).",
|
|
14984
|
+
" - Then match against the capability's **definition** and",
|
|
14985
|
+
" jobs-to-be-done.",
|
|
14986
|
+
" - Tie-break in favor of the most specific (deepest tier)",
|
|
14987
|
+
" capability \u2014 an L3 match beats an L2 match that covers it.",
|
|
14988
|
+
"",
|
|
14989
|
+
"4. **Record low-confidence mappings explicitly** \u2014 never hide a weak",
|
|
14990
|
+
" match behind a high-confidence label. If the best available",
|
|
14991
|
+
" match is low-confidence, mark the feature `_unmapped_` instead",
|
|
14992
|
+
" and describe the near-miss in the `notes` column.",
|
|
14993
|
+
"",
|
|
14994
|
+
"5. **Count unmapped features.** If the count meets or exceeds",
|
|
14995
|
+
" `<UNMAPPED_THRESHOLD>` (default `1`), open one `bcm:outline`",
|
|
14996
|
+
" issue per unmapped feature. The issue must carry:",
|
|
14997
|
+
"",
|
|
14998
|
+
" - `type:bcm-document`",
|
|
14999
|
+
" - `bcm:outline`",
|
|
15000
|
+
" - `priority:medium`",
|
|
15001
|
+
" - `status:ready`",
|
|
15002
|
+
"",
|
|
15003
|
+
" The issue body must include:",
|
|
15004
|
+
" - A **discovery source** line naming this software profile",
|
|
15005
|
+
" (`Discovered while mapping: <product name>`)",
|
|
15006
|
+
" - A link to the software profile path",
|
|
15007
|
+
" (`Software profile: <PROFILES_DIR>/<PRODUCT_SLUG>.md`)",
|
|
15008
|
+
" - The feature name, its one-line description from the profile,",
|
|
15009
|
+
" and a candidate capability name framed as a noun (BIZBOK-aligned)",
|
|
15010
|
+
" - Enough identifying metadata that the `bcm-writer` agent can",
|
|
15011
|
+
" begin the outline phase without revisiting this software",
|
|
15012
|
+
" profile",
|
|
15013
|
+
"",
|
|
15014
|
+
"6. **Avoid duplicate `bcm:outline` issues.** Before opening one,",
|
|
15015
|
+
" scan `<BCM_DOC_ROOT>/` for an existing capability that covers",
|
|
15016
|
+
" the feature (in case the tree grew between the matrix and map",
|
|
15017
|
+
" phases) and scan open issues carrying `bcm:outline` so this",
|
|
15018
|
+
" phase never re-queues a capability that is already being",
|
|
15019
|
+
" outlined. If a match is found, reuse it as a cross-reference in",
|
|
15020
|
+
" the mapping table instead of opening a new issue.",
|
|
15021
|
+
"",
|
|
15022
|
+
"7. **Write the `## Capability Mapping` section** back onto the",
|
|
15023
|
+
" profile file, replacing the `_Pending capability mapping \u2014 filled",
|
|
15024
|
+
" in Phase 4._` placeholder. Preserve every other section of the",
|
|
15025
|
+
" profile verbatim \u2014 this phase only rewrites the mapping section.",
|
|
15026
|
+
"",
|
|
15027
|
+
"8. **Create the `software:followup` issue** with",
|
|
15028
|
+
" `Depends on: #<map-issue>`. Its body references the profile path",
|
|
15029
|
+
" and lists any adjacent products the profile's Follow-up",
|
|
15030
|
+
" Candidates section identified. Skip creating the followup issue",
|
|
15031
|
+
" only when the profile lists zero adjacent products, zero",
|
|
15032
|
+
" primary-attribution people, and the vendor already has a",
|
|
15033
|
+
" company profile \u2014 note the skip in the map issue's closing",
|
|
15034
|
+
" comment.",
|
|
15035
|
+
"",
|
|
15036
|
+
"9. **Assume the peer is present.** This phase assumes the",
|
|
15037
|
+
" `bcm-writer` bundle is enabled in the consuming project. If the",
|
|
15038
|
+
" bundle has been disabled, flag the map issue with",
|
|
15039
|
+
" `status:needs-attention` and list the unmapped features that",
|
|
15040
|
+
" could not be routed \u2014 never invent an alternative label",
|
|
15041
|
+
" taxonomy.",
|
|
15042
|
+
"",
|
|
15043
|
+
"10. **Commit and push** the updated profile. Close the map issue.",
|
|
15044
|
+
"",
|
|
15045
|
+
"---",
|
|
15046
|
+
"",
|
|
15047
|
+
"## Phase 5: Followup (`software:followup`)",
|
|
14894
15048
|
"",
|
|
14895
15049
|
"**Goal:** Create downstream research issues for the adjacent products,",
|
|
14896
15050
|
"vendor company, and primary-attribution people surfaced in the",
|
|
@@ -15010,10 +15164,15 @@ var softwareProfileAnalystSubAgent = {
|
|
|
15010
15164
|
"",
|
|
15011
15165
|
"- `<NOTES_DIR>/` \u2014 research-notes files (Phase 1)",
|
|
15012
15166
|
"- `<PROFILES_DIR>/` \u2014 software profiles (Phase 2, updated in later",
|
|
15013
|
-
" phases)",
|
|
15167
|
+
" phases including the `## Capability Mapping` section in Phase 4)",
|
|
15014
15168
|
"- `<MATRIX_FILE>` \u2014 shared feature matrix (Phase 3)",
|
|
15015
15169
|
"",
|
|
15016
|
-
"In Phase 4, this agent
|
|
15170
|
+
"In Phase 4, this agent **creates `bcm:outline` issues** for every",
|
|
15171
|
+
"unmapped feature that meets the `<UNMAPPED_THRESHOLD>` so the",
|
|
15172
|
+
"`bcm-writer` bundle can author the new sub-capability. It never",
|
|
15173
|
+
"authors BCM capability-model documents itself.",
|
|
15174
|
+
"",
|
|
15175
|
+
"In Phase 5, this agent also **creates `company:research` and",
|
|
15017
15176
|
"`people:research` issues** for the vendor company and primary-",
|
|
15018
15177
|
"attribution people surfaced in the profile that are not already",
|
|
15019
15178
|
"tracked under `<COMPANY_PROFILES_DIR>/` or `<PEOPLE_PROFILES_DIR>/`.",
|
|
@@ -15022,15 +15181,18 @@ var softwareProfileAnalystSubAgent = {
|
|
|
15022
15181
|
"`people-profile-analyst` agents, which pick up the issues this",
|
|
15023
15182
|
"pipeline creates.",
|
|
15024
15183
|
"",
|
|
15025
|
-
"The pipeline produces **software profiles, notes, and
|
|
15026
|
-
"
|
|
15027
|
-
"
|
|
15028
|
-
"
|
|
15029
|
-
"
|
|
15184
|
+
"The pipeline produces **software profiles, notes, matrix rows, and capability mappings**.",
|
|
15185
|
+
"Deeper research on adjacent products is delegated to new cycles of",
|
|
15186
|
+
"this same pipeline via `software:research` issues. New BCM",
|
|
15187
|
+
"sub-capabilities for unmapped features are delegated to the",
|
|
15188
|
+
"`bcm-writer` bundle via `bcm:outline` issues. Deeper research on",
|
|
15189
|
+
"the vendor company and primary-attribution people is delegated to",
|
|
15190
|
+
"the `company-profile` and `people-profile` bundles via",
|
|
15030
15191
|
"`company:research` and `people:research` issues. This agent never",
|
|
15031
|
-
"writes company profiles, person profiles, formal
|
|
15032
|
-
"documents, or comparative long-form analyses itself.
|
|
15033
|
-
"boundary clean so the software-profile pipeline stays
|
|
15192
|
+
"writes BCM documents, company profiles, person profiles, formal",
|
|
15193
|
+
"requirement documents, or comparative long-form analyses itself.",
|
|
15194
|
+
"Keep this boundary clean so the software-profile pipeline stays",
|
|
15195
|
+
"generic.",
|
|
15034
15196
|
"",
|
|
15035
15197
|
"---",
|
|
15036
15198
|
"",
|
|
@@ -15045,31 +15207,41 @@ var softwareProfileAnalystSubAgent = {
|
|
|
15045
15207
|
" `docs/src/content/docs/project-context.md` or an explicit issue-body override. If",
|
|
15046
15208
|
" neither is available, fall back to the single-segment default and",
|
|
15047
15209
|
" flag the gap \u2014 never guess.",
|
|
15048
|
-
"- **Delegate, don't duplicate.**
|
|
15049
|
-
"
|
|
15050
|
-
"
|
|
15051
|
-
"
|
|
15052
|
-
"
|
|
15053
|
-
"
|
|
15054
|
-
"
|
|
15055
|
-
"
|
|
15056
|
-
"
|
|
15210
|
+
"- **Delegate, don't duplicate.** Unmapped capabilities are handed off",
|
|
15211
|
+
" to the `bcm-writer` bundle via `bcm:outline` issues in Phase 4.",
|
|
15212
|
+
" The vendor company and primary-attribution people surfaced during",
|
|
15213
|
+
" profiling are handed off to the `company-profile` and",
|
|
15214
|
+
" `people-profile` bundles via `company:research` and",
|
|
15215
|
+
" `people:research` issues in Phase 5 \u2014 never inlined as BCM",
|
|
15216
|
+
" documents, company profiles, or person profiles in this pipeline.",
|
|
15217
|
+
"- **Check before enqueueing.** Before opening a `bcm:outline`,",
|
|
15218
|
+
" `company:research`, or `people:research` issue, verify no existing",
|
|
15219
|
+
" document or open issue already covers the candidate. Reuse",
|
|
15220
|
+
" existing BCM documents and profiles as cross-references rather",
|
|
15221
|
+
" than re-queuing work.",
|
|
15222
|
+
"- **Respect the threshold.** Phase 4 opens `bcm:outline` issues only",
|
|
15223
|
+
" when the count of unmapped features on a single profile meets or",
|
|
15224
|
+
" exceeds `<UNMAPPED_THRESHOLD>`. The default is `1` \u2014 one unmapped",
|
|
15225
|
+
" feature triggers one outline issue. Raise the threshold in the",
|
|
15226
|
+
" invoking issue body or in the consuming project's",
|
|
15227
|
+
" `agentConfig.rules` when the default is too noisy.",
|
|
15057
15228
|
"- **Restrain the queue \u2014 people only.** The vendor company always",
|
|
15058
15229
|
" qualifies (duplicate check aside). For people, only enqueue",
|
|
15059
15230
|
" research for those with **primary attribution** \u2014 founders, the",
|
|
15060
15231
|
" current CEO, principal creators, lead maintainers, or the head of",
|
|
15061
15232
|
" product. Do not open issues for every name on the vendor's about",
|
|
15062
15233
|
" page, every investor, or every advisor.",
|
|
15063
|
-
"- **Produce profiles
|
|
15064
|
-
" documents
|
|
15065
|
-
"
|
|
15066
|
-
"
|
|
15067
|
-
"
|
|
15234
|
+
"- **Produce profiles, matrix rows, and capability mappings \u2014 not",
|
|
15235
|
+
" BCM documents, requirement documents, or evaluation documents.**",
|
|
15236
|
+
" Do not open `type:requirement` or formal evaluation issues from",
|
|
15237
|
+
" this pipeline, and never author BCM capability-model documents",
|
|
15238
|
+
" inline. Follow-up work is scoped through `software:research`,",
|
|
15239
|
+
" `bcm:outline`, `company:research`, and `people:research` only."
|
|
15068
15240
|
].join("\n")
|
|
15069
15241
|
};
|
|
15070
15242
|
var profileSoftwareSkill = {
|
|
15071
15243
|
name: "profile-software",
|
|
15072
|
-
description: "Kick off a software-profile pipeline. Creates a software:research issue for the given product and dispatches Phase 1 (Research) in the software-profile-analyst agent. Phase 4 (Followup) enqueues downstream `company:research` and `people:research` issues for the vendor company and primary-attribution founders/leaders surfaced in the profile.",
|
|
15244
|
+
description: "Kick off a software-profile pipeline. Creates a software:research issue for the given product and dispatches Phase 1 (Research) in the software-profile-analyst agent. Phase 4 (Map) writes a BCM capability mapping onto the profile and enqueues `bcm:outline` issues for unmapped features. Phase 5 (Followup) enqueues downstream `company:research` and `people:research` issues for the vendor company and primary-attribution founders/leaders surfaced in the profile.",
|
|
15073
15245
|
disableModelInvocation: true,
|
|
15074
15246
|
userInvocable: true,
|
|
15075
15247
|
context: "fork",
|
|
@@ -15096,6 +15268,9 @@ var profileSoftwareSkill = {
|
|
|
15096
15268
|
"- `weights: <table>` \u2014 override the segment-importance weights for",
|
|
15097
15269
|
" this profile cycle (otherwise loaded from",
|
|
15098
15270
|
" `docs/src/content/docs/project-context.md`)",
|
|
15271
|
+
"- `unmapped_threshold: <n>` \u2014 override the Phase 4 threshold for",
|
|
15272
|
+
" opening `bcm:outline` issues (default `1` \u2014 one unmapped feature",
|
|
15273
|
+
" triggers one outline issue)",
|
|
15099
15274
|
"- `sources: <list>` \u2014 additional authorized sources beyond public web",
|
|
15100
15275
|
"",
|
|
15101
15276
|
"## Default Paths",
|
|
@@ -15115,16 +15290,20 @@ var profileSoftwareSkill = {
|
|
|
15115
15290
|
"2. Execute Phase 1 (Research) of the software-profile-analyst",
|
|
15116
15291
|
" agent.",
|
|
15117
15292
|
"3. Phase 1 creates the `software:profile` issue. Phase 2 creates",
|
|
15118
|
-
" the `software:matrix` issue. Phase 3
|
|
15119
|
-
" `software:followup` issue
|
|
15120
|
-
"
|
|
15293
|
+
" the `software:matrix` issue. Phase 3 creates the `software:map`",
|
|
15294
|
+
" issue. Phase 4 creates the `software:followup` issue (unless the",
|
|
15295
|
+
" profile surfaced zero follow-ups). Each downstream issue",
|
|
15296
|
+
" declares its `Depends on:` predecessor.",
|
|
15121
15297
|
"",
|
|
15122
15298
|
"## Output",
|
|
15123
15299
|
"",
|
|
15124
15300
|
"- A research-notes file under the project's notes directory",
|
|
15125
|
-
"- A single software profile under the profiles directory",
|
|
15301
|
+
"- A single software profile under the profiles directory, including",
|
|
15302
|
+
" a `## Capability Mapping` section written in Phase 4",
|
|
15126
15303
|
"- One or more rows appended to the shared feature-matrix file,",
|
|
15127
15304
|
" scored against the configured segment weights",
|
|
15305
|
+
"- `bcm:outline` issues for each unmapped feature above the",
|
|
15306
|
+
" configured threshold (handed off to the `bcm-writer` bundle)",
|
|
15128
15307
|
"- Optional follow-up `software:research` issues for adjacent",
|
|
15129
15308
|
" products surfaced in the profile",
|
|
15130
15309
|
"- `company:research` issue for the vendor company (handed off to",
|
|
@@ -15132,46 +15311,132 @@ var profileSoftwareSkill = {
|
|
|
15132
15311
|
"- `people:research` issues for primary-attribution founders, CEOs,",
|
|
15133
15312
|
" or principal creators (handed off to the `people-profile`",
|
|
15134
15313
|
" bundle)",
|
|
15135
|
-
"- This pipeline produces **software profiles, notes,
|
|
15136
|
-
"
|
|
15137
|
-
" profiles, or formal requirement
|
|
15314
|
+
"- This pipeline produces **software profiles, notes, matrix rows,",
|
|
15315
|
+
" and capability mappings** \u2014 it does not write BCM documents,",
|
|
15316
|
+
" company profiles, person profiles, or formal requirement",
|
|
15317
|
+
" documents itself."
|
|
15318
|
+
].join("\n")
|
|
15319
|
+
};
|
|
15320
|
+
var mapSoftwareSkill = {
|
|
15321
|
+
name: "map-software",
|
|
15322
|
+
description: "Kick off a standalone software-capability mapping session. Creates a software:map issue for an already-profiled product and dispatches Phase 4 (Map) in the software-profile-analyst agent. Produces the `## Capability Mapping` section on the profile and enqueues `bcm:outline` issues for unmapped features above the configured threshold.",
|
|
15323
|
+
disableModelInvocation: true,
|
|
15324
|
+
userInvocable: true,
|
|
15325
|
+
context: "fork",
|
|
15326
|
+
agent: "software-profile-analyst",
|
|
15327
|
+
platforms: { cursor: { exclude: true } },
|
|
15328
|
+
instructions: [
|
|
15329
|
+
"# Map Software",
|
|
15330
|
+
"",
|
|
15331
|
+
"Kick off a standalone `software:map` session for a product that",
|
|
15332
|
+
"already has a profile file and matrix rows on disk. Creates a",
|
|
15333
|
+
"`software:map` issue carrying the profile path and dispatches Phase",
|
|
15334
|
+
"4 (Map) in the software-profile-analyst agent.",
|
|
15335
|
+
"",
|
|
15336
|
+
"Use this skill when:",
|
|
15337
|
+
"",
|
|
15338
|
+
"- A profile was written before the map phase existed and is still",
|
|
15339
|
+
" carrying the `_Pending capability mapping \u2014 filled in Phase 4._`",
|
|
15340
|
+
" placeholder.",
|
|
15341
|
+
"- The BCM tree has grown enough that a previously-mapped profile",
|
|
15342
|
+
" should be re-mapped against the updated capability model.",
|
|
15343
|
+
"- A profile's features were edited after the map phase ran and the",
|
|
15344
|
+
" mapping table is now out of date.",
|
|
15345
|
+
"",
|
|
15346
|
+
"## Usage",
|
|
15347
|
+
"",
|
|
15348
|
+
"/map-software <product-slug-or-profile-path>",
|
|
15349
|
+
"",
|
|
15350
|
+
"Optional extensions in the issue body:",
|
|
15351
|
+
"- `unmapped_threshold: <n>` \u2014 override the threshold for opening",
|
|
15352
|
+
" `bcm:outline` issues (default `1`)",
|
|
15353
|
+
"- `bcm_doc_root: <path>` \u2014 override the BCM document root",
|
|
15354
|
+
" (otherwise the configulator default at",
|
|
15355
|
+
" `DEFAULT_AGENT_PATHS.bcmRoot`)",
|
|
15356
|
+
"- `capability_map: <path>` \u2014 override the capability-map file",
|
|
15357
|
+
" (otherwise `<BCM_DOC_ROOT>/capability-map.md`)",
|
|
15358
|
+
"",
|
|
15359
|
+
"## Default Paths",
|
|
15360
|
+
"",
|
|
15361
|
+
"If the project has no override in `docs/src/content/docs/project-context.md` or",
|
|
15362
|
+
"`agentConfig.rules`, the mapping reads from:",
|
|
15363
|
+
"",
|
|
15364
|
+
`- \`${DEFAULT_AGENT_PATHS.bcmRoot}/\` \u2014 BCM capability-model documents`,
|
|
15365
|
+
`- \`${DEFAULT_AGENT_PATHS.bcmRoot}/capability-map.md\` \u2014 capability map`,
|
|
15366
|
+
"",
|
|
15367
|
+
"and writes back to `docs/software/profiles/<slug>.md` under the",
|
|
15368
|
+
"`## Capability Mapping` section only. No other section of the",
|
|
15369
|
+
"profile is rewritten.",
|
|
15370
|
+
"",
|
|
15371
|
+
"## Steps",
|
|
15372
|
+
"",
|
|
15373
|
+
"1. Create a `software:map` issue with `type:software-profile`,",
|
|
15374
|
+
" `priority:medium`, and `status:ready`. Body must include the",
|
|
15375
|
+
" profile path and any overrides.",
|
|
15376
|
+
"2. Execute Phase 4 (Map) of the software-profile-analyst agent.",
|
|
15377
|
+
"3. Phase 4 writes the `## Capability Mapping` section, enqueues",
|
|
15378
|
+
" `bcm:outline` issues for unmapped features above the threshold,",
|
|
15379
|
+
" and \u2014 when the profile lists adjacent products or",
|
|
15380
|
+
" primary-attribution people \u2014 creates the `software:followup`",
|
|
15381
|
+
" issue.",
|
|
15382
|
+
"",
|
|
15383
|
+
"## Output",
|
|
15384
|
+
"",
|
|
15385
|
+
"- An updated `## Capability Mapping` section on the target profile",
|
|
15386
|
+
"- `bcm:outline` issues for each unmapped feature above the",
|
|
15387
|
+
" configured threshold (handed off to the `bcm-writer` bundle)",
|
|
15388
|
+
"- An optional `software:followup` issue when the profile surfaced",
|
|
15389
|
+
" adjacent products, a vendor company without an existing profile,",
|
|
15390
|
+
" or primary-attribution people",
|
|
15391
|
+
"- This skill does not run Phase 1\u20133 \u2014 it assumes the profile and",
|
|
15392
|
+
" matrix rows already exist on disk."
|
|
15138
15393
|
].join("\n")
|
|
15139
15394
|
};
|
|
15140
15395
|
var softwareProfileBundle = {
|
|
15141
15396
|
name: "software-profile",
|
|
15142
|
-
description: "Software research, profiling,
|
|
15397
|
+
description: "Software research, profiling, feature-matrix, and capability-mapping pipeline: research, profile, matrix, map, followup. Enabled by default; domain-neutral; filesystem-durable between phases; ranks features against configurable segment-importance weights and maps features back to the BCM capability model. Phase 4 (Map) hands unmapped features off to the `bcm-writer` bundle via `bcm:outline` issues. Phase 5 (Followup) hands the vendor company and primary-attribution founders/leaders off to the `company-profile` and `people-profile` bundles via `company:research` and `people:research` issues.",
|
|
15143
15398
|
appliesWhen: () => true,
|
|
15144
15399
|
rules: [
|
|
15145
15400
|
{
|
|
15146
15401
|
name: "software-profile-workflow",
|
|
15147
|
-
description: "Describes the
|
|
15402
|
+
description: "Describes the 5-phase software-profile pipeline, the software:* label taxonomy, the generic software-type taxonomy, the segment-weights convention that drives feature-matrix scoring, and the capability-mapping hand-off to the bcm-writer bundle.",
|
|
15148
15403
|
scope: AGENT_RULE_SCOPE.ALWAYS,
|
|
15149
15404
|
content: [
|
|
15150
15405
|
"# Software Profile Workflow",
|
|
15151
15406
|
"",
|
|
15152
15407
|
"Use `/profile-software <product-name>` to kick off a software",
|
|
15153
|
-
"research, profiling,
|
|
15154
|
-
"runs in up to
|
|
15155
|
-
"each tracked by its own GitHub
|
|
15156
|
-
"`software:research`, `software:profile`,
|
|
15157
|
-
"`software:
|
|
15158
|
-
"",
|
|
15159
|
-
"
|
|
15160
|
-
"
|
|
15161
|
-
"
|
|
15162
|
-
"
|
|
15163
|
-
"
|
|
15164
|
-
"
|
|
15165
|
-
"
|
|
15166
|
-
"
|
|
15167
|
-
"
|
|
15168
|
-
"
|
|
15169
|
-
"
|
|
15408
|
+
"research, profiling, feature-matrix, and capability-mapping",
|
|
15409
|
+
"pipeline. The pipeline runs in up to 5 phases \u2014 research,",
|
|
15410
|
+
"profile, matrix, map, followup \u2014 each tracked by its own GitHub",
|
|
15411
|
+
"issue labeled `software:research`, `software:profile`,",
|
|
15412
|
+
"`software:matrix`, `software:map`, or `software:followup`. All",
|
|
15413
|
+
"issues carry `type:software-profile`.",
|
|
15414
|
+
"",
|
|
15415
|
+
"The pipeline produces **software profiles, research notes, rows",
|
|
15416
|
+
"in a shared feature matrix, and capability mappings onto the",
|
|
15417
|
+
"BCM tree**. Features are ranked against segment-importance",
|
|
15418
|
+
"weights declared in `docs/src/content/docs/project-context.md`",
|
|
15419
|
+
"under a `## Segment Weights` section. Features that do not map",
|
|
15420
|
+
"to any existing capability in the BCM tree are flagged during",
|
|
15421
|
+
"the map phase as candidates for new BCM sub-capabilities and",
|
|
15422
|
+
"handed off to the `bcm-writer` bundle via `bcm:outline` issues",
|
|
15423
|
+
"(subject to a configurable threshold). Deeper research on",
|
|
15424
|
+
"adjacent products surfaced in a profile is delegated to new",
|
|
15425
|
+
"cycles of this same pipeline via `software:followup` issues.",
|
|
15426
|
+
"Deeper research on the vendor company and primary-attribution",
|
|
15427
|
+
"founders/product leaders is delegated to the `company-profile`",
|
|
15428
|
+
"and `people-profile` bundles via `company:research` and",
|
|
15429
|
+
"`people:research` issues opened during Phase 5 (Followup).",
|
|
15430
|
+
"",
|
|
15431
|
+
"Use `/map-software <product-slug>` to kick off a standalone",
|
|
15432
|
+
"`software:map` session for a profile that already exists on",
|
|
15433
|
+
"disk \u2014 for example, when the BCM tree has grown enough that a",
|
|
15434
|
+
"previously-mapped profile should be re-mapped.",
|
|
15170
15435
|
"",
|
|
15171
15436
|
"See the `software-profile-analyst` agent definition for full",
|
|
15172
15437
|
"workflow details, default paths, the software-type taxonomy,",
|
|
15173
|
-
"the segment-weights convention,
|
|
15174
|
-
"instructions."
|
|
15438
|
+
"the segment-weights convention, the capability-mapping format,",
|
|
15439
|
+
"and phase-by-phase instructions."
|
|
15175
15440
|
].join("\n"),
|
|
15176
15441
|
platforms: {
|
|
15177
15442
|
cursor: { exclude: true }
|
|
@@ -15179,13 +15444,13 @@ var softwareProfileBundle = {
|
|
|
15179
15444
|
tags: ["workflow"]
|
|
15180
15445
|
}
|
|
15181
15446
|
],
|
|
15182
|
-
skills: [profileSoftwareSkill],
|
|
15447
|
+
skills: [profileSoftwareSkill, mapSoftwareSkill],
|
|
15183
15448
|
subAgents: [softwareProfileAnalystSubAgent],
|
|
15184
15449
|
labels: [
|
|
15185
15450
|
{
|
|
15186
15451
|
name: "type:software-profile",
|
|
15187
15452
|
color: "0E8A16",
|
|
15188
|
-
description: "Work that produces or maintains a software profile, research notes,
|
|
15453
|
+
description: "Work that produces or maintains a software profile, research notes, feature-matrix rows, or capability mappings"
|
|
15189
15454
|
},
|
|
15190
15455
|
{
|
|
15191
15456
|
name: "software:research",
|
|
@@ -15202,10 +15467,15 @@ var softwareProfileBundle = {
|
|
|
15202
15467
|
color: "D4C5F9",
|
|
15203
15468
|
description: "Phase 3: extract feature rows into the shared feature matrix and score them against segment weights"
|
|
15204
15469
|
},
|
|
15470
|
+
{
|
|
15471
|
+
name: "software:map",
|
|
15472
|
+
color: "A2EEEF",
|
|
15473
|
+
description: "Phase 4: map each feature back to the BCM capability model, write the mapping onto the profile, and enqueue `bcm:outline` issues for unmapped features above the configured threshold"
|
|
15474
|
+
},
|
|
15205
15475
|
{
|
|
15206
15476
|
name: "software:followup",
|
|
15207
15477
|
color: "FBCA04",
|
|
15208
|
-
description: "Phase
|
|
15478
|
+
description: "Phase 5: enqueue follow-up research issues for adjacent products, the vendor company, and primary-attribution people surfaced in the profile"
|
|
15209
15479
|
}
|
|
15210
15480
|
]
|
|
15211
15481
|
};
|