Skip to content

feat(connections): offer both API and CLI screenpipe skills in agent cards#3941

Merged
louis030195 merged 2 commits into
mainfrom
feat/agent-card-both-skills
Jun 9, 2026
Merged

feat(connections): offer both API and CLI screenpipe skills in agent cards#3941
louis030195 merged 2 commits into
mainfrom
feat/agent-card-both-skills

Conversation

@louis030195

@louis030195 louis030195 commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

what

The Hermes and OpenClaw agent cards (Settings > Connections) had a Skill tab that only served one hardcoded SKILL.md (an API/curl snippet). screenpipe actually ships two skills, so the tab now offers both behind an API/CLI switcher:

  • screenpipe-api: read screen history, meetings, and memories over the local REST API
  • screenpipe-cli: manage pipes (scheduled automations) and connections from the shell

Each variant has its own install one-liner, Save-to-Downloads filename, and target path, so the two SKILL.md files land in separate folders instead of colliding.

source of truth

The copy the cards serve is not hand-written. scripts/gen-skill-content.js reads the canonical .claude/skills/{screenpipe-api,screenpipe-cli}/SKILL.md (the same folders the ... skills install github:... one-liners install from) and generates lib/generated/screenpipe-skills.ts. It runs on predev/prebuild, so the cards always reflect the real skills and cannot drift. The generator is defensive: if the sources can't be read it keeps the existing generated file rather than failing the build.

ui

API selected (left) vs CLI selected (right), same tab:

skill tab API and CLI

changes

  • scripts/gen-skill-content.js (new): canonical SKILL.md -> lib/generated/screenpipe-skills.ts.
  • package.json: wire codegen into predev + prebuild; add skills:generate.
  • agent-card.tsx: skill prop becomes skills: SkillVariant[]; SkillSection renders an API/CLI switcher over a reusable SkillVariantBody; the two skill constants are re-exported from the generated module.
  • hermes-card.tsx / openclaw-card.tsx: pass both API + CLI variants.

MCP / Sync (remote) / Connect tabs are untouched.

test plan

  • bun scripts/gen-skill-content.js: generated content matches the source SKILL.md byte-for-byte
  • bunx tsc --noEmit: clean, 0 errors
  • bunx next build: compiled successfully, all routes generated (incl. /settings)

🤖 Generated with Claude Code

Louis Beaumont and others added 2 commits June 9, 2026 13:21
…cards

The Hermes and OpenClaw agent cards' Skill tab served a single hardcoded
SKILL.md (API/curl only). screenpipe ships two skills: screenpipe-api
(query screen history) and screenpipe-cli (manage pipes and connections).
The tab now offers both behind an API/CLI switcher, each with its own
install one-liner, Save-to-Downloads filename, and target path.

agent-card.tsx: SCREENPIPE_SKILL_MD becomes SCREENPIPE_API_SKILL_MD plus a
new SCREENPIPE_CLI_SKILL_MD; the skill prop becomes skills: SkillVariant[];
SkillSection renders a variant switcher plus a per-variant SkillVariantBody.
hermes-card.tsx and openclaw-card.tsx pass both API and CLI variants.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…ILL.md

Replace the hand-written inline skill snippets with the real content from
.claude/skills/{screenpipe-api,screenpipe-cli}/SKILL.md so the cards' copy and
save SKILL.md text is the source of truth from the repo and cannot drift.

- scripts/gen-skill-content.js: reads the two canonical SKILL.md files and
  writes lib/generated/screenpipe-skills.ts (defensive: keeps the existing
  generated file if sources are unreadable, so it never breaks the build).
- package.json: wire codegen into predev and prebuild; add skills:generate.
- agent-card.tsx: re-export the two constants from the generated module.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@louis030195 louis030195 merged commit d510313 into main Jun 9, 2026
16 of 17 checks passed
@louis030195 louis030195 deleted the feat/agent-card-both-skills branch June 9, 2026 20:32
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