Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); fix: view-skills command now shows full contact profile (#61) by lairwaves · Pull Request #225 · 508-dev/508-workflows · GitHub
Skip to content

fix: view-skills command now shows full contact profile (#61) - #225

Merged
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile
Apr 8, 2026
Merged

fix: view-skills command now shows full contact profile (#61)#225
michaelmwu merged 1 commit into
508-dev:mainfrom
lairwaves:fix/view-skills-show-full-profile

Conversation

@lairwaves

@lairwaveslairwaves commented Apr 8, 2026

Copy link
Copy Markdown
Contributor

Before

image

After

Added full contact profile display to the /view-skills command.
Previously only skills were shown. Now a Profile field appears above
the skills list, showing email, type, 508 email, and Discord —
consistent with what /search-members displays.

The original standalone CRM Profile link field has been consolidated
into the new Profile field.

Related Issue:

View skills command should also show full profile, not just show skills #61

How Has This Been Tested?

Updated existing unit tests in tests/unit/test_crm.py to assert that
the embed now includes a Profile field containing email, type, and
508 email.

Summary by CodeRabbit

  • Improvements
    • Refined contact profile presentation in the Discord bot's skill viewer. Contact information is now consolidated into a single formatted profile field, replacing the previous separate link presentation. This improves readability and provides better visual organization of all contact details in one unified display area.

@coderabbitai

coderabbitaiBot commented Apr 8, 2026

Copy link
Copy Markdown
📝 Walkthrough

Walkthrough

The view_skills embed in the Discord CRM cog was refactored to use the existing _format_contact_card() helper function. The embed now displays a "👤 Profile" field containing formatted contact information instead of a separate "🔗 CRM Profile" link field. Corresponding unit tests were updated to verify the new embed structure.

Changes

Cohort / File(s)Summary
View Skills Embed Refactoring
apps/discord_bot/src/five08/discord_bot/cogs/crm.py
Modified view_skills to use _format_contact_card() helper function for the profile embed field, replacing the direct CRM profile URL field with a new "👤 Profile" field.
Test Updates
tests/unit/test_crm.py
Updated unit test payloads to include emailAddress, type, and c508Email fields. Adjusted assertions to verify "👤 Profile" field in position 0 and skills listing in position 1, with fallback test expectations adjusted accordingly.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Poem

🐰 A contact card so neat and fine,
Now formatted with a helper's design,
Profile field shines with emoji flair,
Where CRM links dance through the air,
Tests hopping true, in proper place! ✨

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check nameStatusExplanation
Description Check✅ PassedCheck skipped - CodeRabbit’s high-level summary is enabled.
Title check✅ PassedThe title accurately reflects the main change: the view-skills command now displays a full contact profile in addition to skills, which is precisely what the code changes implement.
Docstring Coverage✅ PassedDocstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

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

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

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.

@coderabbitaicoderabbitaiBot left a comment

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 comments (1)
tests/unit/test_crm.py (1)

3312-3314: Also assert the fallback path still includes the 👤 Profile field.

The fallback test checks skills at index 1, but it doesn’t explicitly verify that index 0 is the profile field. Adding that assertion will lock in the new contract for this path too.

Suggested test hardening
- assert "python" in embed.fields[1].value- assert "sql" in embed.fields[1].value- assert "/5" not in embed.fields[1].value+ profile_field = embed.fields[0]+ assert profile_field.name == "👤 Profile"++ skills_field = embed.fields[1]+ assert "python" in skills_field.value+ assert "sql" in skills_field.value+ assert "/5" not in skills_field.value
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@tests/unit/test_crm.py` around lines 3312 - 3314, The test currently asserts
skills in embed.fields[1] but doesn't verify the fallback includes the profile
field; update the unit test (where embed is checked) to also assert that
embed.fields[0].name (or embed.fields[0].value) contains the profile indicator
"👤 Profile" so the fallback contract is enforced along with the existing skill
checks for embed.fields[1].
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@tests/unit/test_crm.py`:
- Around line 3312-3314: The test currently asserts skills in embed.fields[1]
but doesn't verify the fallback includes the profile field; update the unit test
(where embed is checked) to also assert that embed.fields[0].name (or
embed.fields[0].value) contains the profile indicator "👤 Profile" so the
fallback contract is enforced along with the existing skill checks for
embed.fields[1].

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: ab5fd205-a904-4e63-b525-1debdbb57748

📥 Commits

Reviewing files that changed from the base of the PR and between 248c95e and ce8e492.

📒 Files selected for processing (2)
  • apps/discord_bot/src/five08/discord_bot/cogs/crm.py
  • tests/unit/test_crm.py

@michaelmwu
michaelmwu merged commit 97f3790 into 508-dev:mainApr 8, 2026
5 checks passed
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@lairwaves@michaelmwu