Skip to content

feat: add artist-research skill#5

Open
sidneyswift wants to merge 5 commits intomainfrom
feature/artist-research-skill
Open

feat: add artist-research skill#5
sidneyswift wants to merge 5 commits intomainfrom
feature/artist-research-skill

Conversation

@sidneyswift
Copy link
Copy Markdown
Contributor

@sidneyswift sidneyswift commented Mar 27, 2026

Summary

  • New artist-research skill for deep research on music artists
  • Multi-source pipeline: WebSearch (always), Chartmetric (if token configured), last30days (if installed), MCP tools (if in sandbox)
  • Produces timestamped intelligence reports with bio, career-stage assessment, fan personas, KPI dashboard, cultural adjacency map, competitive white-space, and revenue opportunities
  • Respects artist-workspace static/dynamic context separation — creates artist.md/audience.md when missing, suggests updates when they exist

Test plan

  • Run skill manually against a known artist and verify report quality
  • Test with Chartmetric token available vs unavailable
  • Test in sandbox environment with MCP tools

Made with Cursor

Summary by CodeRabbit

  • Documentation

    • Added a comprehensive guide and quick-reference for the recoup research CLI skill, including authentication, pre-research checks, decision-tree command mappings, command chaining patterns, examples for artist and web intelligence use, saving conventions, and synthesis heuristics.
    • Added 10 pre-built multi-step research workflows with prompts, ordered command sequences, and guidance for extracting insights.
  • Chores

    • Updated sandbox submodule.

Multi-source research pipeline for music artists — produces
intelligence reports with bio, metrics, fan personas, competitive
positioning, and revenue opportunities. Uses WebSearch as the
backbone, Chartmetric for verified analytics, last30days for
social pulse, and MCP tools when available in sandbox.

Made-with: Cursor
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 27, 2026

Warning

Rate limit exceeded

@sidneyswift has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 14 minutes and 50 seconds before requesting another review.

Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 14 minutes and 50 seconds.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 178c1421-d34e-4510-b16d-322d6d5be6d0

📥 Commits

Reviewing files that changed from the base of the PR and between 8594403 and f10c32b.

📒 Files selected for processing (1)
  • recoup-research/SKILL.md
📝 Walkthrough

Walkthrough

A submodule setup-sandbox commit was updated. Two new documentation files were added under recoup-research: SKILL.md (CLI usage, commands, decision tree, operational guidance) and references/workflows.md (10 multi-step research workflow recipes).

Changes

Cohort / File(s) Summary
Submodule Update
setup-sandbox
Recorded subproject commit changed from 004e609a29beeda214622ebce11e46a09c1f7066 to 736a5a2b63b76744f09f6b4ba46152930ad56944. (1 line updated)
Documentation
recoup-research/SKILL.md, recoup-research/references/workflows.md
Added SKILL.md documenting the recoup research CLI skill (authentication, command decision tree, command examples, heuristics, saving conventions). Added references/workflows.md with 10 multi-step workflow recipes mapping questions to ordered CLI command sequences and synthesis guidance.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Poem

🐰 I hopped a commit to brighter light,
Wrote guides that sing through day and night.
Commands and workflows, neat and spry—
Research seeds now ready to fly. 🎶

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'feat: add artist-research skill' accurately and concisely describes the primary change—adding a new artist-research skill with comprehensive documentation, decision trees, and workflow references.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/artist-research-skill

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: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@artist-research/references/report-template.md`:
- Around line 120-122: Two fenced code blocks in the template (the one
containing "[Artist's primary scene] ↔ [Adjacent scene] — Overlap signal: [what
connects them]" and the block starting with "### artist.md" / "### audience.md")
are unlabeled; change their opening fences from ``` to ```text so markdownlint
MD040 is satisfied and the snippets are explicitly treated as plain text. Locate
the fences around those exact snippet contents and replace the fence tokens
accordingly, keeping the internal content unchanged.

In `@artist-research/SKILL.md`:
- Line 91: The example command in SKILL.md contains XML angle brackets around
the placeholder "<path>" which violates the rule forbidding angle brackets;
update the command example in SKILL.md (the last30days.py invocation example) to
remove the angle brackets and use a safe placeholder such as
/path/to/last30days.py or {path} (e.g., python3 /path/to/last30days.py
"{ARTIST_NAME} music" --emit=compact) so the example no longer includes < or >.
- Around line 125-127: The fenced code block containing
"research/artist-intel-YYYY-MM-DD.md" lacks a language tag and violates MD040;
update that fenced block in SKILL.md by adding an explicit language identifier
(e.g., change ``` to ```text) so the block reads ```text followed by the
filename and closing ```, ensuring markdownlint compliance for the fenced block
where "research/artist-intel-YYYY-MM-DD.md" appears.
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 630ccdcf-f62a-451c-ac11-9f8cfa6cc2a0

📥 Commits

Reviewing files that changed from the base of the PR and between 9ccb00f and 3297432.

📒 Files selected for processing (4)
  • artist-research/SKILL.md
  • artist-research/references/report-template.md
  • artist-research/references/research-queries.md
  • setup-sandbox

Comment on lines +120 to +122
```
[Artist's primary scene] ↔ [Adjacent scene] — Overlap signal: [what connects them]
```
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 | 🟡 Minor

Add languages to fenced code blocks to satisfy markdownlint (MD040).

Line 120 and Line 172 use unlabeled fences. Add a language hint (for example text) to avoid lint noise.

Proposed fix
-```
+```text
[Artist's primary scene] ↔ [Adjacent scene] — Overlap signal: [what connects them]

@@
- +text

artist.md

  • [Section]: [What to update] — Source: [where this info came from]

audience.md

  • [Section]: [What to update] — Source: [where this info came from]

Also applies to: 172-178

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@artist-research/references/report-template.md` around lines 120 - 122, Two
fenced code blocks in the template (the one containing "[Artist's primary scene]
↔ [Adjacent scene] — Overlap signal: [what connects them]" and the block
starting with "### artist.md" / "### audience.md") are unlabeled; change their
opening fences from ``` to ```text so markdownlint MD040 is satisfied and the
snippets are explicitly treated as plain text. Locate the fences around those
exact snippet contents and replace the fence tokens accordingly, keeping the
internal content unchanged.

If the last30days skill is installed, run it for the artist name:

```bash
python3 <path>/last30days.py "{ARTIST_NAME} music" --emit=compact
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 | 🟡 Minor

Remove XML angle brackets from the SKILL file command example.

Line 91 uses <path>, which violates the SKILL.md rule forbidding XML angle brackets in this file.

Proposed fix
-python3 <path>/last30days.py "{ARTIST_NAME} music" --emit=compact
+python3 /path/to/last30days.py "{ARTIST_NAME} music" --emit=compact

As per coding guidelines, "Write skill descriptions without XML angle brackets (< >) anywhere in the skill file".

📝 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
python3 <path>/last30days.py "{ARTIST_NAME} music" --emit=compact
python3 /path/to/last30days.py "{ARTIST_NAME} music" --emit=compact
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@artist-research/SKILL.md` at line 91, The example command in SKILL.md
contains XML angle brackets around the placeholder "<path>" which violates the
rule forbidding angle brackets; update the command example in SKILL.md (the
last30days.py invocation example) to remove the angle brackets and use a safe
placeholder such as /path/to/last30days.py or {path} (e.g., python3
/path/to/last30days.py "{ARTIST_NAME} music" --emit=compact) so the example no
longer includes < or >.

Comment on lines +125 to +127
```
research/artist-intel-YYYY-MM-DD.md
```
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 | 🟡 Minor

Add a language tag to this fenced block for markdownlint compliance.

Use an explicit fence language (for example text) to satisfy MD040 and keep docs lint-clean.

Proposed fix
-```
+```text
research/artist-intel-YYYY-MM-DD.md
</details>

<details>
<summary>🤖 Prompt for AI Agents</summary>

Verify each finding against the current code and only fix it if needed.

In @artist-research/SKILL.md around lines 125 - 127, The fenced code block
containing "research/artist-intel-YYYY-MM-DD.md" lacks a language tag and
violates MD040; update that fenced block in SKILL.md by adding an explicit
language identifier (e.g., change totext) so the block reads text followed by the filename and closing , ensuring markdownlint compliance for
the fenced block where "research/artist-intel-YYYY-MM-DD.md" appears.


</details>

<!-- fingerprinting:phantom:triton:hawk:68df909c-7275-4e42-8b2a-6e2042ee5e92 -->

<!-- This is an auto-generated comment by CodeRabbit -->

The skill now covers all 25 recoup research CLI commands, not
just artist research. Renamed because the research tools handle
artists, people, URLs, structured enrichment, and general web
intelligence — not just artist data.

- SKILL.md: full command reference with when-to-use guide
- references/workflows.md: 10 strategic workflow chains
- Removed old Python/Chartmetric references (report-template,
  research-queries)

Made-with: Cursor
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: 1

🧹 Nitpick comments (1)
recoup-research/SKILL.md (1)

8-29: Move critical usage rules higher in the file.

Key operational guidance (for example, “Always use --json”) appears late at Line 124. Consider promoting a short “Critical Rules” list near the top (right after the title/intro) to match the SKILL.md structure guideline.

As per coding guidelines: “Prefer bullet points and numbered lists over prose in SKILL.md files; place critical instructions at the top of the file”.

Also applies to: 122-127

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@recoup-research/SKILL.md` around lines 8 - 29, Move the critical operational
guidance (notably the "Always use `--json`" rule and any other essential usage
rules) up near the top of SKILL.md right after the title/intro: create a short
"Critical Rules" bullet list and include the `--json` rule there, then keep the
existing Quick Start examples (the recoup research commands) below; ensure the
new section follows the documented SKILL.md guideline to prefer bullet points
and numbered lists over prose and references the example commands shown (e.g.,
the Quick Start artist-scoped commands).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@recoup-research/SKILL.md`:
- Line 98: Replace the XML angle brackets in the command example for "Find
emerging artists in hip-hop" by changing the placeholder in `discover --genre
<id>` to a non-angle-bracket form such as `discover --genre [genre_id]` or
`discover --genre {genre_id}` so the SKILL.md rule forbidding '<' and '>' is
followed; update the `discover --genre <id>` instance accordingly.

---

Nitpick comments:
In `@recoup-research/SKILL.md`:
- Around line 8-29: Move the critical operational guidance (notably the "Always
use `--json`" rule and any other essential usage rules) up near the top of
SKILL.md right after the title/intro: create a short "Critical Rules" bullet
list and include the `--json` rule there, then keep the existing Quick Start
examples (the recoup research commands) below; ensure the new section follows
the documented SKILL.md guideline to prefer bullet points and numbered lists
over prose and references the example commands shown (e.g., the Quick Start
artist-scoped commands).
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 5d799acc-44a8-4c2f-8511-4cd391ead8e8

📥 Commits

Reviewing files that changed from the base of the PR and between 3297432 and 94739e8.

📒 Files selected for processing (2)
  • recoup-research/SKILL.md
  • recoup-research/references/workflows.md
✅ Files skipped from review due to trivial changes (1)
  • recoup-research/references/workflows.md

Added:
- Decision tree — routes user questions to the right commands
- Response shapes — shows what each command returns as JSON
- Data interpretation — what the numbers MEAN (ratios, thresholds)
- Synthesis patterns — how to combine endpoints into insights
- Workspace integration — where to save research results
- Graceful degradation — what to do when Chartmetric has no data
- What NOT to do — don't dump JSON, don't over-fetch, don't
  ignore existing context

The skill now teaches agents HOW TO THINK about research, not
just which commands to type.

Made-with: Cursor
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: 2

♻️ Duplicate comments (1)
recoup-research/SKILL.md (1)

34-34: ⚠️ Potential issue | 🟡 Minor

Replace XML angle brackets in the genre placeholder.

Line 34 still uses <id>, which violates the SKILL.md rule forbidding XML angle brackets anywhere in the file.

Suggested fix
-**"Find emerging artists"** → `discover --country US --genre <id> --spotify-listeners 50000,200000`
+**"Find emerging artists"** → `discover --country US --genre [genre_id] --spotify-listeners 50000,200000`

As per coding guidelines, “Write skill descriptions without XML angle brackets (< >) anywhere in the skill file”.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@recoup-research/SKILL.md` at line 34, The "Find emerging artists" skill line
in SKILL.md contains an XML-style placeholder (--genre <id>); remove the angle
brackets and replace the placeholder with a non-XML token (for example GENRE_ID
or genre_id) so the command no longer contains '<' or '>' (update the line
containing --genre <id> accordingly and ensure no other XML angle brackets
remain in the file).
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@recoup-research/SKILL.md`:
- Around line 141-143: The fenced code block in SKILL.md (the triple-backtick
block showing "research/artist-intel-2026-03-27.md") is missing a language tag;
update that fence to include a language (e.g., add "text" after the opening
backticks) so the block becomes fenced with a language specifier to satisfy
MD040.
- Line 26: The command example uses the wrong YouTube source token; update the
example that shows `--platform youtube` to use the valid token `--platform
youtube_channel` so it matches the documented valid source on Line 86 and will
work when run; ensure any other occurrences of `--platform youtube` in SKILL.md
are changed to `--platform youtube_channel` for consistency.

---

Duplicate comments:
In `@recoup-research/SKILL.md`:
- Line 34: The "Find emerging artists" skill line in SKILL.md contains an
XML-style placeholder (--genre <id>); remove the angle brackets and replace the
placeholder with a non-XML token (for example GENRE_ID or genre_id) so the
command no longer contains '<' or '>' (update the line containing --genre <id>
accordingly and ensure no other XML angle brackets remain in the file).
🪄 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: defaults

Review profile: CHILL

Plan: Pro

Run ID: 60db61b0-d9b8-4efe-a489-641c239b9e11

📥 Commits

Reviewing files that changed from the base of the PR and between 94739e8 and 8594403.

📒 Files selected for processing (1)
  • recoup-research/SKILL.md


**"Who should I pitch to?"** → `similar --audience high --genre high` → `playlists` on each peer → find playlists that have peers but not your artist

**"Where should we tour?"** → `cities` + `audience --platform youtube` + `festivals`
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

Use the correct YouTube source token in the command example.

Line 26 uses --platform youtube, but Line 86 says the valid source is youtube_channel. This can mislead users into a failing command.

Suggested fix
-**"Where should we tour?"** → `cities` + `audience --platform youtube` + `festivals`
+**"Where should we tour?"** → `cities` + `audience --platform youtube_channel` + `festivals`
📝 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
**"Where should we tour?"**`cities` + `audience --platform youtube` + `festivals`
**"Where should we tour?"**`cities` + `audience --platform youtube_channel` + `festivals`
🧰 Tools
🪛 LanguageTool

[uncategorized] ~26-~26: The official name of this popular video platform is spelled with a capital “T”.
Context: ...*"Where should we tour?"** → cities + audience --platform youtube + festivals "Find me [people]" ...

(YOUTUBE)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@recoup-research/SKILL.md` at line 26, The command example uses the wrong
YouTube source token; update the example that shows `--platform youtube` to use
the valid token `--platform youtube_channel` so it matches the documented valid
source on Line 86 and will work when run; ensure any other occurrences of
`--platform youtube` in SKILL.md are changed to `--platform youtube_channel` for
consistency.

Comment on lines +141 to +143
```
research/artist-intel-2026-03-27.md
```
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 | 🟡 Minor

Add a language to the fenced code block.

The fenced block starting at Line 141 is missing a language tag (MD040).

Suggested fix
-```
+```text
 research/artist-intel-2026-03-27.md
</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

🧰 Tools
🪛 markdownlint-cli2 (0.22.0)

[warning] 141-141: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@recoup-research/SKILL.md` around lines 141 - 143, The fenced code block in
SKILL.md (the triple-backtick block showing
"research/artist-intel-2026-03-27.md") is missing a language tag; update that
fence to include a language (e.g., add "text" after the opening backticks) so
the block becomes fenced with a language specifier to satisfy MD040.

Sign up for free to 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.

1 participant