Skip to content

feat(compass): career discovery mode for users who don't know their target roles#643

Open
sfayka wants to merge 7 commits into
santifer:mainfrom
sfayka:feat/compass-mode
Open

feat(compass): career discovery mode for users who don't know their target roles#643
sfayka wants to merge 7 commits into
santifer:mainfrom
sfayka:feat/compass-mode

Conversation

@sfayka
Copy link
Copy Markdown

@sfayka sfayka commented May 13, 2026

What this adds

A new /career-ops compass mode that helps users who don't know what roles to target figure out their direction — and ends with a fully drafted profile.yml + _profile.md ready for their approval.

The current onboarding flow (AGENTS.md Step 2) assumes users already know their target roles. Users who don't have no guided path. Compass fills that gap.

How it works

Phase 0 — Profile check
Detects whether a real profile exists. If so, asks "revisit your direction or start fresh?" before proceeding.

Phase 1 — Silent CV analysis
Reads cv.md internally and derives domains, functions, seniority signals, and 2–3 candidate archetypes. Nothing is shown to the user yet.

Phase 2 — Adaptive discovery questions
Asks 3 core questions (what energizes you, what you want more of, what's a hard no). Follows up adaptively based on signals of uncertainty — 3 questions minimum, 10 maximum. Stops early when the picture is clear.

Phase 3 — Ikigai-style reveal
This is the heart of the mode. Shows the CV-derived archetype suggestions ("here's what I would have pointed you toward before you told me anything"), then the discovery synthesis, then where they overlap and diverge. Surfaces insights the user may not have considered. Confirms before moving on.

Phase 4 — Interactive profile drafting
Presents draft profile.yml and _profile.md section by section. User approves, edits, or skips each block. Files are written only after full approval.

Changes

  • modes/compass.md — new mode (225 lines)
  • AGENTS.md — Step 2 onboarding offramp + Skill Modes table entry
  • .agents/skills/career-ops/SKILL.md — routing table, argument-hint, discovery menu, context loading
  • test-all.mjs — compass added to expected modes list

Test plan

  • node test-all.mjs passes (66 passed, 0 failed)
  • Run /career-ops compass with no profile set up — should proceed directly to CV analysis + questions
  • Run /career-ops compass with existing profile — should ask "revisit or start fresh?"
  • Run /career-ops with no args — compass should appear first in the discovery menu
  • During onboarding Step 2, say "I don't know" to target roles — should route to compass

Follow-on

/career-ops polish — CV enhancement for target archetypes — is the natural next PR once this lands.

Summary by CodeRabbit

  • New Features

    • Added /career-ops compass — a standalone career discovery mode to explore roles, surface strengths, and build a profile via guided questions and an ikigai-style reveal.
  • Documentation

    • Added comprehensive design and workflow docs for compass, including phased discovery, silent CV analysis, drafting/approval flow, and onboarding routing to the standalone command.
  • Tests

    • Updated tests to include and validate the new compass mode.

Review Change Stack

sfayka added 6 commits May 13, 2026 12:03
Spec for /career-ops compass — a career discovery mode that helps
users who don't know their target roles figure out what they want
through adaptive questioning, silent CV analysis, and an ikigai-style
reveal before drafting profile.yml + _profile.md for approval.
@github-actions
Copy link
Copy Markdown
Contributor

Welcome to career-ops, @sfayka! Thanks for your first PR.

A few things to know:

  • Tests will run automatically — check the status below
  • Make sure you've linked a related issue (required for features)
  • Read CONTRIBUTING.md if you haven't

We'll review your PR soon. Join our Discord if you have questions.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 13, 2026

📝 Walkthrough

Walkthrough

This PR introduces /career-ops compass, a standalone career discovery sub-command. The feature adds skill metadata registration, a four-phase workflow implementation, comprehensive design documentation, onboarding integration to route uncertain users, and test coverage for the new mode file.

Changes

Career Discovery Compass Mode

Layer / File(s) Summary
Design Specification
docs/superpowers/specs/2026-05-13-compass-mode-design.md
Comprehensive design document for the compass career discovery mode, covering five-phase workflow, profile file drafting/approval gates, onboarding integration, and success criteria.
Skill Registration and Routing
.agents/skills/career-ops/SKILL.md
Compass sub-command added to skill metadata argument-hint, mode routing configuration, discovery menu help text, and execution context rules to load shared and mode-specific resources.
Compass Mode Workflow Specification
modes/compass.md
Four-phase workflow: Phase 0 checks for existing/placeholder profile; Phase 1 performs silent CV analysis to derive domains, functions, seniority, and archetypes; Phase 2 runs adaptive discovery questions with stopping conditions; Phase 3 presents ikigai-style reveal with approval gates; Phase 4 handles interactive section-by-section drafting and approval of config/profile.yml and modes/_profile.md with atomic write semantics.
Onboarding Integration
AGENTS.md
Onboarding flow updated to route users uncertain about target roles to standalone /career-ops compass command. Skill Modes table extended to map "doesn't know target roles" intent to compass mode.
Test Verification
test-all.mjs
Mode file integrity test updated to include compass.md in the expected modes list.

🎯 3 (Moderate) | ⏱️ ~25 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat(compass): career discovery mode for users who don't know their target roles' accurately and specifically summarizes the main feature addition—a new career discovery mode for users uncertain about target roles.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/superpowers/specs/2026-05-13-compass-mode-design.md`:
- Around line 62-65: Update the "Phase 1 — Silent CV Analysis" contract to
explicitly handle a missing cv.md by detecting absence of cv.md and routing the
flow into onboarding/setup guidance instead of proceeding; in the Phase 1
description (referencing "cv.md" and "Silent CV Analysis") add a clear branch
that triggers onboarding mode and lists the step-by-step onboarding sequence: CV
(required), Profile (required), Portals (recommended), Tracker, Get to know the
user, Ready, so first-run flows never hit a dead-end when cv.md is not present.
- Line 5: The doc references use the wrong skill file token: replace every
occurrence of ".claude/skills/career-ops/career-ops.md" with the PR's canonical
skill token ".agents/skills/career-ops/SKILL.md" in the affected docs (the
compass mode spec and AGENTS/skill mentions) so all three reference points are
consistent; search for the outdated token and update it to the PR canonical
token, then run a quick pass to ensure the same replacement was applied at each
place flagged in the review.
- Around line 172-179: Replace the unlabeled fenced code blocks around the table
row "`| `compass` | `compass` |`" and the router example "/career-ops compass  →
Career discovery: figure out what you want + set up your profile" with
language-tagged fences (e.g., ```md) and ensure there is a blank line before and
after each fenced block; update both occurrences of the triple-backtick fences
shown in the diff so they become "```md" and are separated from surrounding text
by an empty line.

In `@modes/compass.md`:
- Around line 122-145: Part 3's current copy assumes both CV-derived and
discovery-derived archetypes exist; update the flow around "Part 3: Where they
overlap — and where they don't" to first check for the presence of cv.md and
branch: if cv.md exists, keep the overlap/gap framing (lead with overlap as
primary, show gaps and ask the question), otherwise skip "overlap/gap" language
and present discovery-derived archetype(s) directly as primary/secondary
recommendations, then still ask "Does this feel right..." and pause for
confirmation before Phase 4; make sure to reference the cv.md existence check so
rendering logic and text vary accordingly.
- Around line 160-164: The candidate block currently assumes Populate from
`cv.md` but Phase 1 permits running without cv.md, so update the Block 1:
candidate logic to detect a missing or unreadable cv.md and gracefully fallback:
when `cv.md` is absent, populate name, email, phone, location, LinkedIn, GitHub
with empty strings or sensible placeholders and render the YAML preview with
those placeholders (or display a short "cv.md not found — please add" message in
the preview). Ensure the code/path that reads `cv.md` (the logic referenced by
"Populate from `cv.md`" in Block 1: candidate) returns the fallback object
instead of failing so downstream rendering of the YAML preview continues without
errors.
- Around line 102-114: Part 1 of Phase 3 currently unconditionally instructs
presenting CV-derived archetypes even when cv.md is missing; update the logic so
Part 1 checks for the presence of cv.md (the Phase 1 cv.md flag/marker) and, if
absent, emits the alternate text "discovery findings only, without a CV-derived
baseline" instead of listing CV-derived archetypes; modify the conditional
branch that builds Part 1's output (the section that "List the 2–3 CV-derived
archetype candidates") to reference the cv.md existence flag from Phase 1 and
render the CV-derived list only when that flag is true.
- Around line 214-225: Clarify that "skipping" is distinct from "approval":
update the passage so it states that files (config/profile.yml then
modes/_profile.md) are written only after the user has either approved or
explicitly skipped each section, and make clear that an explicit skip does not
count as approval but will cause the corresponding section in the written files
to remain as the template placeholder; also explicitly preserve the write
sequence and include the confirmation text "Profile saved. You're ready to start
evaluating roles — paste a job description or URL to run the full pipeline." so
the user sees the final state.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: beebde78-a5e8-42ed-82bd-6726932a5aec

📥 Commits

Reviewing files that changed from the base of the PR and between d692647 and 271ecea.

📒 Files selected for processing (5)
  • .agents/skills/career-ops/SKILL.md
  • AGENTS.md
  • docs/superpowers/specs/2026-05-13-compass-mode-design.md
  • modes/compass.md
  • test-all.mjs

Comment thread docs/superpowers/specs/2026-05-13-compass-mode-design.md Outdated
Comment thread docs/superpowers/specs/2026-05-13-compass-mode-design.md
Comment thread docs/superpowers/specs/2026-05-13-compass-mode-design.md Outdated
Comment thread modes/compass.md
Comment thread modes/compass.md
Comment thread modes/compass.md
Comment thread modes/compass.md Outdated
…arity, spec accuracy

- Part 1 and Part 3 of ikigai reveal now branch on cv.md presence
- Block 1 candidate has fallback placeholders when cv.md is absent
- Write gate distinguishes approved vs explicitly skipped sections
- Spec doc: fix skill file token (.agents/SKILL.md), add cv.md fallback note, language-tag fenced blocks
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/superpowers/specs/2026-05-13-compass-mode-design.md`:
- Around line 138-143: Update the Phase 4 block specs and the implementation in
modes/compass.md to define explicit fallbacks when cv.md is absent: for the
candidate block (Block 1) ensure contact fields fall back to discovery data and,
if missing, to an explicit "unknown" placeholder and a prompt to collect
email/phone; for the narrative block (Block 3) specify that headline,
superpowers, and proof points must be synthesized from discovery notes alone (or
else mark as "needs CV" and surface questions to elicit missing proof points),
and implement that synthesis logic in modes/compass.md; for the location block
(Block 5) state it should come from discovery constraints or a default of
"remote/unknown" plus a prompt to confirm location constraints, and update
modes/compass.md to populate location from discovery or emit the confirmation
prompt when absent.

In `@modes/compass.md`:
- Around line 177-187: The fenced YAML code block in modes/compass.md is missing
blank lines before and after (MD031); add a blank line immediately above the
opening "```yaml" and another blank line immediately below the closing "```" so
the surrounding text ("the user to fill..." and "Show as a YAML preview.") are
separated from the fenced block — this preserves Markdown formatting conventions
for the YAML snippet shown.
- Around line 218-221: Section 2 ("Adaptive framing table") currently claims
content is "Derived from Phase 1 functions and Phase 2 answers" but offers no
fallback when Phase 1 is skipped (i.e., when cv.md is absent); update the
compass.md text for "Section 2: Adaptive framing table" to detect or document
the fallback: if Phase 1 artifacts (cv.md / Phase 1 functions) are missing,
derive the framing table solely from Phase 2 answers and/or add a short note
that defaults will be used and which fields are populated from Phase 2; mention
the condition explicitly (cv.md absent) and the fallback behavior so readers and
implementers know to use Phase 2-only derivation.
- Around line 207-208: Block 5 ("location") currently assumes cv.md exists;
update the compass mode logic that populates Block 5 to detect when cv.md is
missing (Phase 1 allows running without it) and provide a fallback—e.g., leave
location blank with a clear placeholder, use a sourced default/location from
Phase 2 constraints, or prompt for user input—so the code path that builds
"Block 5: location" handles the absence of cv.md gracefully; modify the Block 5
population routine (the code that references cv.md for location) to branch on
cv.md presence and use the chosen fallback.
- Around line 223-225: Section 3: Exit narrative currently assumes a CV summary
exists; add conditional fallback so when cv.md is absent (per Phase 1 rules) the
"Exit narrative" generation uses Phase 2 discovery content or a short generic
CV-summary template instead; update the logic that composes "Section 3: Exit
narrative" to check for the presence of cv.md and, if missing, pull key points
from the Phase 2 discovery data or insert a 2–3 sentence placeholder linking
past experience to target direction.
- Around line 194-200: Block 3 ("narrative") assumes cv.md exists but Phase 1
permits running without it, so add explicit fallback logic: when cv.md is absent
populate headline from Phase 2 discovery/summary (or prompt user for a one-line
professional identity), derive superpowers from Phase 1/Phase 2
function/energizes answers as before, and build proof_points from Phase 2
notable projects or user-entered achievement bullets (or mark proof_points as
optional with a clear "no CV provided" placeholder). Update the Block 3
documentation to state these conditional behaviors and reference the fields
headline, superpowers, proof_points and the source cv.md so implementers follow
the fallback flow.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: d0753bf3-dc33-4b17-b5be-326fbf43a3f6

📥 Commits

Reviewing files that changed from the base of the PR and between 271ecea and 2901a30.

📒 Files selected for processing (2)
  • docs/superpowers/specs/2026-05-13-compass-mode-design.md
  • modes/compass.md

Comment on lines +138 to +143
1. `candidate` block — populate from CV (name, email, phone, location, LinkedIn, GitHub)
2. `target_roles` block — populate from Phase 3 archetype recommendations
3. `narrative` block — headline, superpowers, and proof points derived from CV + discovery
4. `compensation` block — ask directly if not surfaced in discovery: *"What's your target comp range and your walk-away number?"*
5. `location` block — populate from CV + any constraints surfaced in discovery

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Specify fallback behavior for Blocks 1, 3, and 5 when cv.md is absent.

Phase 1 (Line 66) establishes that cv.md can be absent, but the Phase 4 block descriptions assume CV data is available. When cv.md is missing:

  • Block 1 (candidate): needs fallback for contact details
  • Block 3 (narrative): "derived from CV + discovery" has no CV to derive from
  • Block 5 (location): "populate from CV" has no CV to populate from

This specification gap propagates to the implementation file (modes/compass.md), where Block 1 has been addressed but Blocks 3 and 5 have not.

📋 Proposed specification update
 **`config/profile.yml` sections (presented in order):**
 
-1. `candidate` block — populate from CV (name, email, phone, location, LinkedIn, GitHub)
+1. `candidate` block — if `cv.md` exists, populate from CV; otherwise prompt user for contact details
 2. `target_roles` block — populate from Phase 3 archetype recommendations
-3. `narrative` block — headline, superpowers, and proof points derived from CV + discovery
+3. `narrative` block — headline, superpowers, and proof points derived from discovery; include CV-based proof points if `cv.md` exists
 4. `compensation` block — ask directly if not surfaced in discovery: *"What's your target comp range and your walk-away number?"*
-5. `location` block — populate from CV + any constraints surfaced in discovery
+5. `location` block — populate from any constraints surfaced in discovery; include CV location if `cv.md` exists
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/superpowers/specs/2026-05-13-compass-mode-design.md` around lines 138 -
143, Update the Phase 4 block specs and the implementation in modes/compass.md
to define explicit fallbacks when cv.md is absent: for the candidate block
(Block 1) ensure contact fields fall back to discovery data and, if missing, to
an explicit "unknown" placeholder and a prompt to collect email/phone; for the
narrative block (Block 3) specify that headline, superpowers, and proof points
must be synthesized from discovery notes alone (or else mark as "needs CV" and
surface questions to elicit missing proof points), and implement that synthesis
logic in modes/compass.md; for the location block (Block 5) state it should come
from discovery constraints or a default of "remote/unknown" plus a prompt to
confirm location constraints, and update modes/compass.md to populate location
from discovery or emit the confirmation prompt when absent.

Comment thread modes/compass.md
Comment on lines +177 to +187
the user to fill in any blank fields before approving:
```yaml
candidate:
full_name: ""
email: ""
phone: ""
location: ""
linkedin: ""
github: ""
```
Show as a YAML preview.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial | 💤 Low value

Add blank lines around the YAML code block.

The fenced code block at Lines 178-186 is missing blank lines before and after per Markdown formatting conventions (MD031).

📝 Proposed formatting fix
 If `cv.md` is absent, show the block with empty string placeholders and ask
 the user to fill in any blank fields before approving:
+
 ```yaml
 candidate:
   full_name: ""
   email: ""
   phone: ""
   location: ""
   linkedin: ""
   github: ""

Show as a YAML preview.

</details>

<!-- suggestion_start -->

<details>
<summary>📝 Committable suggestion</summary>

> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

```suggestion
the user to fill in any blank fields before approving:

🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 178-178: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


[warning] 186-186: Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modes/compass.md` around lines 177 - 187, The fenced YAML code block in
modes/compass.md is missing blank lines before and after (MD031); add a blank
line immediately above the opening "```yaml" and another blank line immediately
below the closing "```" so the surrounding text ("the user to fill..." and "Show
as a YAML preview.") are separated from the fenced block — this preserves
Markdown formatting conventions for the YAML snippet shown.

Comment thread modes/compass.md
Comment on lines +194 to +200
**Block 3: narrative**
- `headline`: one-line professional identity, drafted from CV summary
and Phase 2 discovery
- `superpowers`: 3–5 bullets derived from the functions identified in
Phase 1 and the "energizes you" answers from Phase 2
- `proof_points`: notable projects or achievements from `cv.md`, each
with a `hero_metric` if one can be derived
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add fallback handling for Block 3 when cv.md is absent.

Block 3 narrative references "CV summary" (Line 195) and "from cv.md" (Line 199), but Phase 1 (Lines 36-38) allows compass to run without cv.md. When cv.md is absent:

  • "drafted from CV summary" has no CV to draft from
  • "proof_points...from cv.md" has no source data

Without explicit fallback guidance, implementers won't know how to populate this block in the no-CV scenario.

📋 Proposed fix with conditional fallback
 **Block 3: narrative**
-- `headline`: one-line professional identity, drafted from CV summary
-  and Phase 2 discovery
+- `headline`: one-line professional identity, drafted from Phase 2 
+  discovery; if `cv.md` exists, incorporate CV summary
 - `superpowers`: 3–5 bullets derived from the functions identified in
-  Phase 1 and the "energizes you" answers from Phase 2
+  Phase 1 (if cv.md present) and the "energizes you" answers from Phase 2
 - `proof_points`: notable projects or achievements from `cv.md`, each
-  with a `hero_metric` if one can be derived
+  with a `hero_metric` if one can be derived; if `cv.md` is absent, 
+  leave as empty array or prompt user for 1-2 key achievements
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modes/compass.md` around lines 194 - 200, Block 3 ("narrative") assumes cv.md
exists but Phase 1 permits running without it, so add explicit fallback logic:
when cv.md is absent populate headline from Phase 2 discovery/summary (or prompt
user for a one-line professional identity), derive superpowers from Phase
1/Phase 2 function/energizes answers as before, and build proof_points from
Phase 2 notable projects or user-entered achievement bullets (or mark
proof_points as optional with a clear "no CV provided" placeholder). Update the
Block 3 documentation to state these conditional behaviors and reference the
fields headline, superpowers, proof_points and the source cv.md so implementers
follow the fallback flow.

Comment thread modes/compass.md
Comment on lines +207 to +208
**Block 5: location**
Populate from `cv.md` location and any constraints surfaced in Phase 2.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add fallback handling for Block 5 when cv.md is absent.

Block 5 location states "Populate from cv.md location" (Line 208), but Phase 1 (Lines 36-38) allows compass to run without cv.md. When cv.md is absent, there is no CV location to populate from.

📋 Proposed fix with conditional fallback
 **Block 5: location**
-Populate from `cv.md` location and any constraints surfaced in Phase 2.
+Populate from any constraints surfaced in Phase 2; if `cv.md` exists, 
+include CV location. If no location data from either source, prompt user:
+> *"What's your current location and any location/remote preferences?"*
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modes/compass.md` around lines 207 - 208, Block 5 ("location") currently
assumes cv.md exists; update the compass mode logic that populates Block 5 to
detect when cv.md is missing (Phase 1 allows running without it) and provide a
fallback—e.g., leave location blank with a clear placeholder, use a sourced
default/location from Phase 2 constraints, or prompt for user input—so the code
path that builds "Block 5: location" handles the absence of cv.md gracefully;
modify the Block 5 population routine (the code that references cv.md for
location) to branch on cv.md presence and use the chosen fallback.

Comment thread modes/compass.md
Comment on lines +218 to +221
**Section 2: Adaptive framing table**
For each archetype, a brief note on which parts of the candidate's
background to emphasize. Derived from Phase 1 functions and Phase 2
answers.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add fallback handling for Section 2 when Phase 1 is skipped.

Section 2 states "Derived from Phase 1 functions and Phase 2 answers" (Line 220), but Phase 1 is skipped when cv.md is absent (Lines 36-38). In that scenario, "Phase 1 functions" don't exist.

📋 Proposed fix with conditional fallback
 **Section 2: Adaptive framing table**
 For each archetype, a brief note on which parts of the candidate's
-background to emphasize. Derived from Phase 1 functions and Phase 2
-answers.
+background to emphasize. Derived from Phase 2 answers; if Phase 1 ran 
+(cv.md present), also incorporate function signals from CV analysis.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modes/compass.md` around lines 218 - 221, Section 2 ("Adaptive framing
table") currently claims content is "Derived from Phase 1 functions and Phase 2
answers" but offers no fallback when Phase 1 is skipped (i.e., when cv.md is
absent); update the compass.md text for "Section 2: Adaptive framing table" to
detect or document the fallback: if Phase 1 artifacts (cv.md / Phase 1
functions) are missing, derive the framing table solely from Phase 2 answers
and/or add a short note that defaults will be used and which fields are
populated from Phase 2; mention the condition explicitly (cv.md absent) and the
fallback behavior so readers and implementers know to use Phase 2-only
derivation.

Comment thread modes/compass.md
Comment on lines +223 to +225
**Section 3: Exit narrative**
A 2–3 sentence professional narrative bridging past experience to
target direction. Draws from CV summary + Phase 2 discovery.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Add fallback handling for Section 3 when cv.md is absent.

Section 3 states "Draws from CV summary + Phase 2 discovery" (Line 225), but cv.md can be absent per Phase 1 (Lines 36-38). When cv.md is absent, there is no CV summary to draw from.

📋 Proposed fix with conditional fallback
 **Section 3: Exit narrative**
 A 2–3 sentence professional narrative bridging past experience to
-target direction. Draws from CV summary + Phase 2 discovery.
+target direction. Draws from Phase 2 discovery; if `cv.md` exists, 
+incorporate CV summary to bridge past experience.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
**Section 3: Exit narrative**
A 2–3 sentence professional narrative bridging past experience to
target direction. Draws from CV summary + Phase 2 discovery.
**Section 3: Exit narrative**
A 2–3 sentence professional narrative bridging past experience to
target direction. Draws from Phase 2 discovery; if `cv.md` exists,
incorporate CV summary to bridge past experience.
🧰 Tools
🪛 LanguageTool

[style] ~224-~224: Consider using “experience”.
Context: ...entence professional narrative bridging past experience to target direction. Draws from CV summ...

(PAST_EXPERIENCE_MEMORY)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modes/compass.md` around lines 223 - 225, Section 3: Exit narrative currently
assumes a CV summary exists; add conditional fallback so when cv.md is absent
(per Phase 1 rules) the "Exit narrative" generation uses Phase 2 discovery
content or a short generic CV-summary template instead; update the logic that
composes "Section 3: Exit narrative" to check for the presence of cv.md and, if
missing, pull key points from the Phase 2 discovery data or insert a 2–3
sentence placeholder linking past experience to target direction.

@sfayka
Copy link
Copy Markdown
Author

sfayka commented May 14, 2026

All 7 findings from the CodeRabbit review have been addressed in commit 2901a30:

modes/compass.md

  • Part 1 (Phase 3) now branches on cv.md presence — skips CV-derived archetypes entirely when the file was absent in Phase 1
  • Part 3 (Phase 3) branches accordingly — overlap/gap framing when cv.md present, direct discovery recommendations when absent; confirmation gate preserved in both paths
  • Block 1 (Phase 4) now falls back to empty-string YAML placeholders with a fill-in prompt when cv.md is absent
  • Write gate now explicitly distinguishes approved vs explicitly skipped — both allow writing, but a skip preserves the template placeholder in the written file

docs/superpowers/specs/2026-05-13-compass-mode-design.md

  • Skill file token corrected from .claude/skills/career-ops/career-ops.md to .agents/skills/career-ops/SKILL.md in all 3 occurrences (line 5, Files Changed table, Router Changes section)
  • Phase 1 description updated to document the cv.md missing fallback
  • Fenced code blocks in the Router Changes section now use language tag (```md) with blank lines before and after

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant