CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

stream-feeds-migration

Generate the v2 -> v3 sync mapping for a Stream Activity Feeds app by sampling its live v2 activities and reactions and, when the app's v2 integration code is available, reading its write paths, and, from that code, plan how the app's code moves from v2 to v3. Use when setting up a Feeds v2 to v3 migration, when asked to build, review, or debug a v3 sync mapping, when someone asks 'what mapping do we need for our app?', when asked how to port an app's v2 Feeds code to v3, or when a migrated activity lands in v3 with missing text, missing attachments, comments that are not comments, or bookmarks that went missing. Triggers on v3sync, v2 to v3, feeds migration, activity feeds migration, sync mapping, extra_context, reaction kinds, comments and bookmarks mapping, porting plan. The same mapping drives both the live syncer and the bulk exporter.

76

Quality

95%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

92%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A high-caliber skill body: a seven-step read-only workflow with executable commands, concrete error triage, cross-validation between sampled data and code inventory, and an unusually honest 'Limits of the sample' disclosure section that separates 'correct' from 'fits the sample'. Progressive disclosure is textbook — catalogues live in verified one-level-deep references. The only deduction is minor verbosity from deliberate repetition (the legacy-flag ban is stated three times) and a few wordy asides.

Suggestions

State the legacy-layout-flag prohibition once (e.g., in the Output format section, linking to mapping-keys.md) instead of three times across the Analysis checklist, Output format, and reference pointer — the repetition costs tokens without adding enforcement.

Consolidate the 'one mapping serves both the live syncer and the bulk exporter' point, which currently appears in the intro, the description, and mapping-keys.md, into a single statement.

Tighten the `<skill-dir>` resolution and `!`-prefix explanations by a sentence each — the rule (resolve to an absolute path; the value must bypass the transcript) can be stated in one line apiece.

DimensionReasoningScore

Conciseness

The body is efficient and assumes competence — it never explains generic concepts (JWT, REST, JSON) and spends its tokens on domain facts Claude cannot know (endpoint semantics, `slices` crowding, key-direction quirks like name/image reading 'v3-key-to-v2-source, backwards from every other string key'). A few spots could be trimmed: the legacy-layout-flag prohibition is stated three times (Analysis checklist, Output format, and again via mapping-keys.md), 'one mapping serves both paths' recurs in the intro and elsewhere, and the `<skill-dir>`/`!`-prefix digressions run a sentence longer than needed. This sits above anchor 3 ('mostly efficient but some unnecessary explanation') but short of anchor 5 ('every token earns its place') because of that deliberate repetition and a few wordy asides.

4 / 5

Actionability

Guidance is fully executable: copy-paste commands (`python3 <skill-dir>/scripts/fetch_sample.py --out v3sync-sample.json`, the `! export ...` secret handshake, `test -n "$STREAM_API_SECRET" && echo SECRET_SET || echo SECRET_MISSING`, `scripts/scan_v2_calls.py --root <repo> --out v2-code-scan.json`, `git log -S'<field>'`), concrete error triage (401/403 = bad secret or wrong token type; 404 = endpoints not deployed; empty activities vs. reactions proving data exists), a ready-to-paste output JSON, and placeholder resolution instructions for `<skill-dir>` including the two possible install paths. This matches anchor 5 ('Fully executable; copy-paste ready code or commands; specific examples cover the common cases').

5 / 5

Workflow Clarity

A numbered seven-step workflow with an explicit analysis checklist, explicit validation checkpoints (cross-check the code inventory against the sample in step 4; 'Before finalizing, check each key you emitted against the worked examples'), and feedback loops for error recovery (re-run the sample to firm up single-row decisions, `--feed` re-reads for under-covered feed groups, per-feed errors recorded without stopping the run). The operation is read-only, so the destructive-batch cap does not apply. This matches anchor 5 ('Clear sequence with explicit validation steps; feedback loops for error recovery; checklists for complex processes').

5 / 5

Progressive Disclosure

Structure is exemplary: the body holds the workflow and decision checklist while heavy catalogues are offloaded one level deep to real, clearly signaled files — references/mapping-keys.md (verified to exist, holds the full key catalogue so the body can say 'do not guess key names from memory'), references/code-inventory.md, references/porting-plan.md, plus scripts/fetch_sample.py and scripts/scan_v2_calls.py, both present. References are linked at their point of use, and pack-level files (../stream/RULES.md, peers.yaml) are flagged up front. This matches anchor 5 ('Clear overview with well-signaled one-level-deep references; content appropriately split; easy navigation').

5 / 5

Total

19

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

The description is exemplary: third-person, concrete, and complete, stating exactly what the skill produces (the v2 -> v3 sync mapping and optional porting plan), how (sampling live v2 activities/reactions, reading v2 integration code), and when through five explicit trigger scenarios plus a keyword list. Its only cost is length, but every clause adds a trigger or scope boundary rather than padding.

DimensionReasoningScore

Specificity

Multiple concrete actions are named in third person: "Generate the v2 -> v3 sync mapping ... by sampling its live v2 activities and reactions", "reading its write paths", and "plan how the app's code moves from v2 to v3" — comprehensive coverage with no vague filler. It clearly matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage' rather than the anchor above-below gap at 4 ('minor gaps in coverage').

5 / 5

Completeness

It explicitly answers both parts: what ("Generate the v2 -> v3 sync mapping ... by sampling its live v2 activities and reactions") and when (five distinct 'Use when ...' clauses with concrete trigger phrases, from initial setup to debugging a bad migration). This matches anchor 5 ('Clearly and explicitly answers both what AND when with concrete trigger phrases'); anchor 4 would require the 'when' to be less explicit, which it is not.

5 / 5

Trigger Term Quality

Natural user phrasings are covered both as questions ("'what mapping do we need for our app?'", "how to port an app's v2 Feeds code to v3") and as a keyword list ("v3sync, v2 to v3, feeds migration, activity feeds migration, sync mapping, extra_context, reaction kinds, comments and bookmarks mapping, porting plan"), plus symptom triggers like "missing text, missing attachments". This is comprehensive coverage including synonyms and colloquial variations, not merely 'good coverage with a few missing' (anchor 4).

5 / 5

Distinctiveness Conflict Risk

The niche is sharp (Stream Activity Feeds v2 -> v3 sync mapping) and every trigger is namespaced to it ('feeds migration', 'v3sync', 'sync mapping', 'comments and bookmarks mapping'), so overlap with unrelated skills is minimal. It fits anchor 5 ('Clear niche with distinct triggers; minimal conflict risk'); the only conceivable overlap is with sibling Stream pack skills, which the triggers already disambiguate.

5 / 5

Total

20

/

20

Passed

Validation

81%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 13 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

allowed_tools_field

'allowed-tools' contains unusual tool name(s)

Warning

metadata_version

'metadata.version' is missing

Warning

relative_links

Relative link issues: 4 suspicious

Warning

Total

13

/

16

Passed

Repository

GetStream/agent-skills

Path

skills/stream-feeds-migration/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.