@codedrifters/configulator 0.0.259 → 0.0.260
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 +3 -3
- package/lib/index.d.ts +3 -3
- package/lib/index.js +247 -29
- package/lib/index.js.map +1 -1
- package/lib/index.mjs +247 -29
- package/lib/index.mjs.map +1 -1
- package/package.json +1 -1
package/lib/index.mjs
CHANGED
|
@@ -6173,7 +6173,7 @@ var orchestratorBundle = {
|
|
|
6173
6173
|
// src/agent/bundles/people-profile.ts
|
|
6174
6174
|
var peopleProfileAnalystSubAgent = {
|
|
6175
6175
|
name: "people-profile-analyst",
|
|
6176
|
-
description: "Researches an individual person (colleague, customer contact, vendor contact, partner contact, industry expert, or connector) from public sources and produces a structured markdown profile cross-linked to companies, software, and meeting notes, then enqueues downstream `company:research` and `software:research` issues for unprofiled companies and software products surfaced during profiling. One person per session, tracked by people:* GitHub issue labels.",
|
|
6176
|
+
description: "Researches an individual person (colleague, customer contact, vendor contact, partner contact, industry expert, or connector) from public sources and produces a structured markdown profile cross-linked to companies, software, and meeting notes, then enqueues downstream `company:research` and `software:research` issues for unprofiled companies and software products surfaced during profiling. Also handles maintenance refreshes on a configurable staleness cadence (`people:refresh`). One person per session, tracked by people:* GitHub issue labels.",
|
|
6177
6177
|
model: AGENT_MODEL.POWERFUL,
|
|
6178
6178
|
maxTurns: 80,
|
|
6179
6179
|
platforms: { cursor: { exclude: true } },
|
|
@@ -6233,6 +6233,12 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6233
6233
|
" the `software-profile` bundle via `software:research` issues.",
|
|
6234
6234
|
" Meeting notes remain link-only \u2014 this agent never creates",
|
|
6235
6235
|
" meeting-research issues.",
|
|
6236
|
+
"9. **Refresh is targeted re-verification, not re-research.**",
|
|
6237
|
+
" `people:refresh` runs a small number of targeted searches focused",
|
|
6238
|
+
" on the narrow set of facts that drift (role, employer, primary",
|
|
6239
|
+
" public channel) and updates the profile in place. It never",
|
|
6240
|
+
" re-runs the full research-phase sweep and never forks the profile",
|
|
6241
|
+
" under a new slug.",
|
|
6236
6242
|
"",
|
|
6237
6243
|
"---",
|
|
6238
6244
|
"",
|
|
@@ -6267,6 +6273,15 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6267
6273
|
"\u2502 bounded notes \u2502 \u2502 the configured path \u2502 \u2502 company/software \u2502",
|
|
6268
6274
|
"\u2502 file \u2502 \u2502 \u2502 \u2502 research issues \u2502",
|
|
6269
6275
|
"\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
|
|
6276
|
+
"",
|
|
6277
|
+
"\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510",
|
|
6278
|
+
"\u2502 4. REFRESH \u2502 (cadence-driven, or on-demand)",
|
|
6279
|
+
"\u2502 Re-verify an \u2502",
|
|
6280
|
+
"\u2502 existing profile \u2502",
|
|
6281
|
+
"\u2502 with targeted web \u2502",
|
|
6282
|
+
"\u2502 searches. Update \u2502",
|
|
6283
|
+
"\u2502 in place. \u2502",
|
|
6284
|
+
"\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518",
|
|
6270
6285
|
"```",
|
|
6271
6286
|
"",
|
|
6272
6287
|
"**Issue labels encode the phase:**",
|
|
@@ -6276,13 +6291,13 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6276
6291
|
"| `people:research` | 1. Research | Gather public sources. Write a bounded research-notes file. Create the draft issue. |",
|
|
6277
6292
|
"| `people:draft` | 2. Draft | Read the research notes. Write the structured profile to `<PROFILES_DIR>`. Create the followup issue if warranted. |",
|
|
6278
6293
|
"| `people:followup` | 3. Followup | Read the profile. Update cross-references to existing companies, software, and meeting notes. Enqueue `company:research` and `software:research` issues for unprofiled, genuinely-relevant entities surfaced in the profile. |",
|
|
6294
|
+
"| `people:refresh` | 4. Refresh | Read an existing profile. Run 3\u20135 targeted web searches for role, employer, and primary public channel changes. Update the profile in place and add a revision-history entry. |",
|
|
6279
6295
|
"",
|
|
6280
6296
|
"All issues also carry `type:people-profile` and a `status:*` label.",
|
|
6281
6297
|
"",
|
|
6282
6298
|
"**Issue count per person cycle:** 1 research + 1 draft + 0\u20131 followup =",
|
|
6283
|
-
"**2\u20133 sessions
|
|
6284
|
-
"
|
|
6285
|
-
"software products warrant downstream research.",
|
|
6299
|
+
"**2\u20133 sessions** on the initial cycle. `people:refresh` is an",
|
|
6300
|
+
"independent downstream cycle that runs on its own cadence.",
|
|
6286
6301
|
"",
|
|
6287
6302
|
"**Shortened paths:**",
|
|
6288
6303
|
"- Research phase determines the person is out of scope (not",
|
|
@@ -6290,14 +6305,17 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6290
6305
|
" with a justification and no downstream issues are created \u2192 **1 session**.",
|
|
6291
6306
|
"- Short profile with no cross-references and no downstream",
|
|
6292
6307
|
" candidates \u2192 **2 sessions**.",
|
|
6308
|
+
"- Refresh that finds no material change \u2192 **1 session** (revision-",
|
|
6309
|
+
" history entry only, profile body unchanged).",
|
|
6293
6310
|
"",
|
|
6294
6311
|
"---",
|
|
6295
6312
|
"",
|
|
6296
6313
|
"## Configurable Paths",
|
|
6297
6314
|
"",
|
|
6298
6315
|
"The pipeline uses these placeholders. Consuming projects override the",
|
|
6299
|
-
"defaults by passing paths in the `/profile-person`
|
|
6300
|
-
"or by extending this rule in their own
|
|
6316
|
+
"defaults by passing paths in the `/profile-person` or `/refresh-person`",
|
|
6317
|
+
"skill invocations, or by extending this rule in their own",
|
|
6318
|
+
"`agentConfig.rules`.",
|
|
6301
6319
|
"",
|
|
6302
6320
|
"| Placeholder | Meaning | Default |",
|
|
6303
6321
|
"|-------------|---------|---------|",
|
|
@@ -6319,26 +6337,37 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6319
6337
|
"## Refresh Cadence",
|
|
6320
6338
|
"",
|
|
6321
6339
|
"Profiles go stale. A person changes jobs, publishes new work, or",
|
|
6322
|
-
"shifts focus. The pipeline supports a configurable refresh cadence
|
|
6340
|
+
"shifts focus. The pipeline supports a configurable refresh cadence",
|
|
6341
|
+
"so `people:refresh` issues can be filed on a schedule without",
|
|
6342
|
+
"hardcoding the interval:",
|
|
6323
6343
|
"",
|
|
6324
|
-
"- **Default
|
|
6325
|
-
"
|
|
6326
|
-
"
|
|
6327
|
-
" `
|
|
6344
|
+
"- **Default staleness threshold:** 180 days from the profile's",
|
|
6345
|
+
" `date` frontmatter.",
|
|
6346
|
+
"- **Override precedence** (first match wins):",
|
|
6347
|
+
" 1. `refresh_days` in the issue body (per-run override)",
|
|
6348
|
+
" 2. `refresh_days` frontmatter on the profile itself",
|
|
6349
|
+
" 3. Project-wide default declared under a `## Refresh Cadence`",
|
|
6350
|
+
" section in `docs/src/content/docs/project-context.md`",
|
|
6351
|
+
" 4. Built-in default: **180 days**",
|
|
6328
6352
|
"",
|
|
6329
|
-
"When the `/
|
|
6330
|
-
"has a profile:",
|
|
6353
|
+
"When the `/refresh-person` skill is invoked for an existing profile:",
|
|
6331
6354
|
"",
|
|
6332
|
-
"- If the profile is **younger** than the
|
|
6333
|
-
" exits with a message pointing to the existing profile. Pass",
|
|
6355
|
+
"- If the profile is **younger** than the staleness threshold, the",
|
|
6356
|
+
" skill exits with a message pointing to the existing profile. Pass",
|
|
6334
6357
|
" `force: true` in the issue body to refresh anyway.",
|
|
6335
|
-
"- If the profile is **older** than the
|
|
6336
|
-
"
|
|
6337
|
-
"
|
|
6358
|
+
"- If the profile is **older** than the staleness threshold, the",
|
|
6359
|
+
" pipeline files a `people:refresh` issue and Phase 4 updates the",
|
|
6360
|
+
" existing file in place, preserving its slug and bumping the",
|
|
6361
|
+
" `date` frontmatter.",
|
|
6362
|
+
"",
|
|
6363
|
+
"The same precedence and `force: true` semantics apply when",
|
|
6364
|
+
"`/profile-person` is invoked for a slug that already has a profile:",
|
|
6365
|
+
"a fresh profile short-circuits; a stale profile is updated in place",
|
|
6366
|
+
"by Phase 2 rather than forked under a new slug.",
|
|
6338
6367
|
"",
|
|
6339
6368
|
"Refresh mode never changes the profile's role without an explicit",
|
|
6340
|
-
"override in the refresh request \u2014 role changes
|
|
6341
|
-
"warrant a human review step.",
|
|
6369
|
+
"override in the refresh request (`retype: <role>`) \u2014 role changes",
|
|
6370
|
+
"are material and warrant a human review step.",
|
|
6342
6371
|
"",
|
|
6343
6372
|
"---",
|
|
6344
6373
|
"",
|
|
@@ -6347,7 +6376,8 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6347
6376
|
"Run this loop exactly once per session. Never start a second issue.",
|
|
6348
6377
|
"",
|
|
6349
6378
|
"1. Claim one open `type:people-profile` issue using phase priority:",
|
|
6350
|
-
" `people:research` > `people:draft` > `people:followup
|
|
6379
|
+
" `people:research` > `people:draft` > `people:followup` >",
|
|
6380
|
+
" `people:refresh`.",
|
|
6351
6381
|
"2. Transition `status:ready` \u2192 `status:in-progress` and create the",
|
|
6352
6382
|
" branch per your project's branch-naming convention.",
|
|
6353
6383
|
"3. Execute the phase handler that matches the issue's `people:*`",
|
|
@@ -6515,6 +6545,11 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6515
6545
|
" <what the profile could not answer; flag anything the followup",
|
|
6516
6546
|
" phase should cross-reference>",
|
|
6517
6547
|
"",
|
|
6548
|
+
" ## Revision History",
|
|
6549
|
+
" | Date | Changes |",
|
|
6550
|
+
" |------|---------|",
|
|
6551
|
+
" | YYYY-MM-DD | Initial profile |",
|
|
6552
|
+
"",
|
|
6518
6553
|
" ## Sources",
|
|
6519
6554
|
" - <source URL> \u2014 <date accessed>",
|
|
6520
6555
|
" ```",
|
|
@@ -6660,12 +6695,87 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6660
6695
|
"",
|
|
6661
6696
|
"---",
|
|
6662
6697
|
"",
|
|
6698
|
+
"## Phase 4: Refresh (`people:refresh`)",
|
|
6699
|
+
"",
|
|
6700
|
+
"**Goal:** Re-verify an existing profile against a narrow set of facts",
|
|
6701
|
+
"that tend to drift \u2014 current role, current employer, primary public",
|
|
6702
|
+
"channel (email, handle, personal site) \u2014 with a small number of",
|
|
6703
|
+
"targeted web searches, then update the profile in place.",
|
|
6704
|
+
"",
|
|
6705
|
+
"**Budget:** 3\u20135 targeted web searches focused on the narrow delta",
|
|
6706
|
+
"set. Do not redo the full research-phase sweep, do not re-gather the",
|
|
6707
|
+
"full background, and do not rewrite the profile body for facts that",
|
|
6708
|
+
"have not changed.",
|
|
6709
|
+
"",
|
|
6710
|
+
"### Steps",
|
|
6711
|
+
"",
|
|
6712
|
+
"1. **Read the existing profile** at the path referenced in the issue",
|
|
6713
|
+
" body. If the profile file is missing, close the issue with",
|
|
6714
|
+
" `status:needs-attention` and stop.",
|
|
6715
|
+
"",
|
|
6716
|
+
"2. **Confirm the staleness threshold.** Compare the profile's `date`",
|
|
6717
|
+
" frontmatter against today's date and the `refresh_days`",
|
|
6718
|
+
" frontmatter (or the project default from the Refresh Cadence",
|
|
6719
|
+
" section above). If the profile is younger than the threshold and",
|
|
6720
|
+
" the issue body does not set `force: true`, close the issue with",
|
|
6721
|
+
" a short comment and stop \u2014 do not burn the search budget.",
|
|
6722
|
+
"",
|
|
6723
|
+
"3. **Run 3\u20135 targeted searches.** Focus on the narrow delta set:",
|
|
6724
|
+
" - Current role / title at the current employer",
|
|
6725
|
+
" - Current employer (has the person changed jobs?)",
|
|
6726
|
+
" - Primary public channel (personal site URL, primary social",
|
|
6727
|
+
" handle, speaker inquiry form, public email if listed)",
|
|
6728
|
+
" - Optional: one search for notable recent public work (a new",
|
|
6729
|
+
" talk, post, or project) if the profile's Expertise Signals",
|
|
6730
|
+
" section has no entry from the last 12 months",
|
|
6731
|
+
"",
|
|
6732
|
+
"4. **Update the profile in place.** Edit only the affected sections",
|
|
6733
|
+
" (typically `## Current Position`, `## Contact Preferences`, and",
|
|
6734
|
+
" occasionally `## Expertise Signals`). Cite every new claim.",
|
|
6735
|
+
" Preserve the slug and the original `parent_issue` field. Bump the",
|
|
6736
|
+
" `date` frontmatter to today's date. Leave untouched sections",
|
|
6737
|
+
" untouched \u2014 refresh is a narrow delta, not a rewrite.",
|
|
6738
|
+
"",
|
|
6739
|
+
"5. **Do not silently re-type the person.** If the refresh surfaces",
|
|
6740
|
+
" evidence that the person's primary role has changed (e.g., a",
|
|
6741
|
+
" customer-contact who now works at your own organization and",
|
|
6742
|
+
" should become a colleague), flag it in `## Risks / Open Questions`",
|
|
6743
|
+
" and stop \u2014 do **not** rewrite the `role` frontmatter without an",
|
|
6744
|
+
" explicit override in the refresh issue body (`retype: <role>`).",
|
|
6745
|
+
"",
|
|
6746
|
+
"6. **Append a revision-history row.** Summarize the delta in one",
|
|
6747
|
+
" line:",
|
|
6748
|
+
"",
|
|
6749
|
+
" ```markdown",
|
|
6750
|
+
" | YYYY-MM-DD | Refreshed: <one-line summary of what changed> |",
|
|
6751
|
+
" ```",
|
|
6752
|
+
"",
|
|
6753
|
+
" When the search budget finds no material change, the row still",
|
|
6754
|
+
" appears so the next scheduled refresh knows this profile was",
|
|
6755
|
+
" reviewed:",
|
|
6756
|
+
"",
|
|
6757
|
+
" ```markdown",
|
|
6758
|
+
" | YYYY-MM-DD | Refreshed: no material change |",
|
|
6759
|
+
" ```",
|
|
6760
|
+
"",
|
|
6761
|
+
"7. **Respect privacy.** The narrow delta set is bounded to public",
|
|
6762
|
+
" professional facts. Never expand the refresh into private contact",
|
|
6763
|
+
" details, family information, or other non-professional data \u2014",
|
|
6764
|
+
" even if a search surfaces them. Privacy guardrails from Phase 1",
|
|
6765
|
+
" apply to every refresh.",
|
|
6766
|
+
"",
|
|
6767
|
+
"8. **Commit and push.** Close the refresh issue with a short comment",
|
|
6768
|
+
" summarizing the delta (or `no material change`).",
|
|
6769
|
+
"",
|
|
6770
|
+
"---",
|
|
6771
|
+
"",
|
|
6663
6772
|
"## Output Boundaries",
|
|
6664
6773
|
"",
|
|
6665
6774
|
"This agent writes **only** to:",
|
|
6666
6775
|
"",
|
|
6667
6776
|
"- `<NOTES_DIR>/` \u2014 research-notes files (Phase 1)",
|
|
6668
|
-
"- `<PROFILES_DIR>/` \u2014 person profiles (Phase 2, updated in
|
|
6777
|
+
"- `<PROFILES_DIR>/` \u2014 person profiles (Phase 2, updated in Phases",
|
|
6778
|
+
" 3 and 4)",
|
|
6669
6779
|
"",
|
|
6670
6780
|
"In Phase 3, this agent also **creates `company:research` and",
|
|
6671
6781
|
"`software:research` issues** for companies and software products",
|
|
@@ -6676,6 +6786,13 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6676
6786
|
"which pick up the issues this pipeline creates. Meeting notes",
|
|
6677
6787
|
"remain link-only across all phases.",
|
|
6678
6788
|
"",
|
|
6789
|
+
"In Phase 4, this agent only updates an existing profile in place \u2014",
|
|
6790
|
+
"it never forks a new profile under a different slug and never",
|
|
6791
|
+
"enqueues downstream `company:research` or `software:research`",
|
|
6792
|
+
"issues. Cross-references surfaced during a refresh are flagged in",
|
|
6793
|
+
"`## Risks / Open Questions` for a follow-up `people:followup` pass",
|
|
6794
|
+
"to handle.",
|
|
6795
|
+
"",
|
|
6679
6796
|
"The pipeline produces **person profiles and notes only**. Deeper",
|
|
6680
6797
|
"research on companies and software products is delegated to",
|
|
6681
6798
|
"downstream research pipelines via `company:research` and",
|
|
@@ -6720,6 +6837,15 @@ var peopleProfileAnalystSubAgent = {
|
|
|
6720
6837
|
" not open `type:requirement` or formal evaluation issues from this",
|
|
6721
6838
|
" pipeline. Follow-up research is scoped through `company:research`",
|
|
6722
6839
|
" and `software:research` only.",
|
|
6840
|
+
"- **Refresh respects the cadence.** Phase 4 exits early when the",
|
|
6841
|
+
" profile is younger than the staleness threshold and `force: true`",
|
|
6842
|
+
" is not set. It always appends a revision-history row so the next",
|
|
6843
|
+
" scheduled run knows the profile was reviewed.",
|
|
6844
|
+
"- **Refresh is narrow, not a rewrite.** Phase 4 re-verifies role,",
|
|
6845
|
+
" employer, and primary public channel with 3\u20135 targeted searches",
|
|
6846
|
+
" and updates only the affected sections. It never re-runs the full",
|
|
6847
|
+
" research-phase sweep and never rewrites sections whose underlying",
|
|
6848
|
+
" facts have not changed.",
|
|
6723
6849
|
"- **Refresh, don't fork.** When a profile exists and is past its",
|
|
6724
6850
|
" cadence, update in place rather than creating a new slug."
|
|
6725
6851
|
].join("\n")
|
|
@@ -6798,23 +6924,110 @@ var profilePersonSkill = {
|
|
|
6798
6924
|
" other downstream artifacts itself."
|
|
6799
6925
|
].join("\n")
|
|
6800
6926
|
};
|
|
6927
|
+
var refreshPersonSkill = {
|
|
6928
|
+
name: "refresh-person",
|
|
6929
|
+
description: "Kick off a people-profile refresh cycle. Creates a people:refresh issue for an existing profile and dispatches Phase 4 (Refresh) in the people-profile-analyst agent. Refresh re-verifies the profile's narrow delta set (role, employer, primary public channel) with 3\u20135 targeted web searches and updates it in place. Respects a configurable staleness threshold so profiles younger than the threshold exit early.",
|
|
6930
|
+
disableModelInvocation: true,
|
|
6931
|
+
userInvocable: true,
|
|
6932
|
+
context: "fork",
|
|
6933
|
+
agent: "people-profile-analyst",
|
|
6934
|
+
platforms: { cursor: { exclude: true } },
|
|
6935
|
+
instructions: [
|
|
6936
|
+
"# Refresh Person",
|
|
6937
|
+
"",
|
|
6938
|
+
"Re-verify an existing person profile with a small number of",
|
|
6939
|
+
"targeted web searches and update the profile in place. Creates a",
|
|
6940
|
+
"`people:refresh` issue for the target profile and dispatches",
|
|
6941
|
+
"Phase 4 (Refresh) in the people-profile-analyst agent.",
|
|
6942
|
+
"",
|
|
6943
|
+
"Refresh respects a configurable **staleness threshold** so scheduled",
|
|
6944
|
+
"refreshes do not burn search budget on profiles that are still",
|
|
6945
|
+
"fresh.",
|
|
6946
|
+
"",
|
|
6947
|
+
"## Usage",
|
|
6948
|
+
"",
|
|
6949
|
+
"/refresh-person <path-to-profile>",
|
|
6950
|
+
"",
|
|
6951
|
+
"Optional extensions in the issue body:",
|
|
6952
|
+
"- `refresh_days: <N>` \u2014 override the default 180-day staleness",
|
|
6953
|
+
" threshold for this run",
|
|
6954
|
+
"- `force: true` \u2014 refresh even if the profile is younger than the",
|
|
6955
|
+
" threshold",
|
|
6956
|
+
"- `retype: <colleague | customer-contact | vendor-contact |",
|
|
6957
|
+
" partner-contact | industry-expert | connector>` \u2014 explicitly",
|
|
6958
|
+
" allow Phase 4 to change the profile's `role` when the refresh",
|
|
6959
|
+
" finds material evidence of a role-type change",
|
|
6960
|
+
"",
|
|
6961
|
+
"## Staleness Threshold",
|
|
6962
|
+
"",
|
|
6963
|
+
"Order of precedence (first match wins):",
|
|
6964
|
+
"",
|
|
6965
|
+
"1. `refresh_days` in the issue body (per-run override)",
|
|
6966
|
+
"2. `refresh_days` frontmatter on the profile itself",
|
|
6967
|
+
"3. Project-wide default declared under a `## Refresh Cadence`",
|
|
6968
|
+
" section in `docs/src/content/docs/project-context.md`",
|
|
6969
|
+
"4. Built-in default: **180 days**",
|
|
6970
|
+
"",
|
|
6971
|
+
"If the profile's `date` frontmatter plus the resolved threshold is",
|
|
6972
|
+
"in the future (i.e. the profile is still fresh) and `force: true`",
|
|
6973
|
+
"is not set, Phase 4 closes the refresh issue with a short comment",
|
|
6974
|
+
"and stops without running any searches.",
|
|
6975
|
+
"",
|
|
6976
|
+
"## Budget",
|
|
6977
|
+
"",
|
|
6978
|
+
"- **3\u20135 targeted web searches** focused on the narrow delta set:",
|
|
6979
|
+
" current role / title, current employer, primary public channel",
|
|
6980
|
+
" (personal site, handle, speaker inquiry form, public email).",
|
|
6981
|
+
"- Optional: one search for notable recent public work if the",
|
|
6982
|
+
" profile has no Expertise Signals entry from the last 12 months.",
|
|
6983
|
+
"",
|
|
6984
|
+
"## Privacy",
|
|
6985
|
+
"",
|
|
6986
|
+
"Privacy guardrails from Phase 1 apply to every refresh. Never",
|
|
6987
|
+
"record private contact details, family information, or other",
|
|
6988
|
+
"non-professional personal data \u2014 even if a search surfaces them.",
|
|
6989
|
+
"",
|
|
6990
|
+
"## Steps",
|
|
6991
|
+
"",
|
|
6992
|
+
"1. Create a `people:refresh` issue with `type:people-profile`,",
|
|
6993
|
+
" `priority:medium`, and `status:ready`. Body must include the",
|
|
6994
|
+
" profile path and any overrides.",
|
|
6995
|
+
"2. Execute Phase 4 (Refresh) of the people-profile-analyst agent.",
|
|
6996
|
+
"",
|
|
6997
|
+
"## Output",
|
|
6998
|
+
"",
|
|
6999
|
+
"- The profile is updated in place (affected sections edited,",
|
|
7000
|
+
" `date` bumped, slug preserved)",
|
|
7001
|
+
"- A revision-history row summarizing the delta \u2014 or",
|
|
7002
|
+
" `Refreshed: no material change` when the search budget found",
|
|
7003
|
+
" nothing material"
|
|
7004
|
+
].join("\n")
|
|
7005
|
+
};
|
|
6801
7006
|
var peopleProfileBundle = {
|
|
6802
7007
|
name: "people-profile",
|
|
6803
|
-
description: "People research and profiling pipeline: research, draft profile, followup. Enabled by default; domain-neutral; filesystem-durable between phases. Cross-references existing companies, software, and meeting notes, and Phase 3 (Followup) hands unprofiled, genuinely-relevant companies and software products off to the `company-profile` and `software-profile` bundles via `company:research` and `software:research` issues.",
|
|
7008
|
+
description: "People research and profiling pipeline: research, draft profile, followup, refresh. Enabled by default; domain-neutral; filesystem-durable between phases. Cross-references existing companies, software, and meeting notes, and Phase 3 (Followup) hands unprofiled, genuinely-relevant companies and software products off to the `company-profile` and `software-profile` bundles via `company:research` and `software:research` issues. Phase 4 (Refresh) re-verifies profiles on a configurable staleness cadence.",
|
|
6804
7009
|
appliesWhen: () => true,
|
|
6805
7010
|
rules: [
|
|
6806
7011
|
{
|
|
6807
7012
|
name: "people-profile-workflow",
|
|
6808
|
-
description: "Describes the
|
|
7013
|
+
description: "Describes the 4-phase people-profile pipeline, the people:* label taxonomy, the cross-reference model, the refresh cadence rules, and the boundary against downstream research agents.",
|
|
6809
7014
|
scope: AGENT_RULE_SCOPE.ALWAYS,
|
|
6810
7015
|
content: [
|
|
6811
7016
|
"# People Profile Workflow",
|
|
6812
7017
|
"",
|
|
6813
7018
|
"Use `/profile-person <person-name>` to kick off a person",
|
|
6814
|
-
"research and profiling pipeline. The pipeline runs in up to
|
|
6815
|
-
"phases \u2014 research, draft, followup \u2014 each tracked by
|
|
6816
|
-
"GitHub issue labeled `people:research`, `people:draft`,
|
|
6817
|
-
"`people:followup`. All issues carry
|
|
7019
|
+
"research and profiling pipeline. The pipeline runs in up to 4",
|
|
7020
|
+
"phases \u2014 research, draft, followup, refresh \u2014 each tracked by",
|
|
7021
|
+
"its own GitHub issue labeled `people:research`, `people:draft`,",
|
|
7022
|
+
"`people:followup`, or `people:refresh`. All issues carry",
|
|
7023
|
+
"`type:people-profile`.",
|
|
7024
|
+
"",
|
|
7025
|
+
"One additional user-invocable skill drives the maintenance",
|
|
7026
|
+
"phase independently:",
|
|
7027
|
+
"",
|
|
7028
|
+
"- `/refresh-person <path-to-profile>` \u2014 re-verify an existing",
|
|
7029
|
+
" profile with 3\u20135 targeted web searches and update it in",
|
|
7030
|
+
" place (Phase 4, respects a configurable staleness threshold).",
|
|
6818
7031
|
"",
|
|
6819
7032
|
"The pipeline produces **person profiles only**. Deeper research",
|
|
6820
7033
|
"on companies and software products surfaced while profiling is",
|
|
@@ -6833,7 +7046,7 @@ var peopleProfileBundle = {
|
|
|
6833
7046
|
tags: ["workflow"]
|
|
6834
7047
|
}
|
|
6835
7048
|
],
|
|
6836
|
-
skills: [profilePersonSkill],
|
|
7049
|
+
skills: [profilePersonSkill, refreshPersonSkill],
|
|
6837
7050
|
subAgents: [peopleProfileAnalystSubAgent],
|
|
6838
7051
|
labels: [
|
|
6839
7052
|
{
|
|
@@ -6855,6 +7068,11 @@ var peopleProfileBundle = {
|
|
|
6855
7068
|
name: "people:followup",
|
|
6856
7069
|
color: "D4C5F9",
|
|
6857
7070
|
description: "Phase 3: cross-link the profile to existing companies, software, and meeting notes, and enqueue follow-up research issues for unprofiled companies and software products"
|
|
7071
|
+
},
|
|
7072
|
+
{
|
|
7073
|
+
name: "people:refresh",
|
|
7074
|
+
color: "F9D0C4",
|
|
7075
|
+
description: "Phase 4: re-verify an existing person profile with targeted web searches and update it in place"
|
|
6858
7076
|
}
|
|
6859
7077
|
]
|
|
6860
7078
|
};
|