Agent Native

dynamics

Finds and inventories dynamic content on a source site during migration, classifies it by type (APIs, forms, search, client-rendered), triages each finding…

by Adobe, Inc.Official publisher

Identity proven by GitHub's verified organisation badge (adobe)

Agents
Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode
License
Apache-2.0 (permissive)
Pin
940b879pinned Oct 9, 2026
Context cost
about 2,200 tokenswhen the skill loads
GitHub stars
197on adobe/skills
Scripts
12 scripts

What it does

“Find, classify, triage, re-implement and verify a source site's dynamic surface (APIs, search, forms, modals, media, tags, client-rendered and sheet-backed content) during a migration to a platform. Migration-bound — invoked by prepare-migration, replica, migrate and rollout, or standalone on an already-migrated site; never for redesign-only work.”
The author's description, from SKILL.md

Generated summary from the skill's own text

Finds and inventories dynamic content on a source site during migration, classifies it by type (APIs, forms, search, client-rendered), triages each finding with implementation decisions, then verifies behavior parity after deployment. Uses detection scripts to probe the live source, creates an inventory requiring explicit owner decisions before import, and replays checks against the migrated site to confirm flows work as expected.

When to use it

  • Migrating a site to a new platform where JavaScript-rendered or API-driven content must be re-implemented
  • Ensuring modals, search, forms, and data-backed components work the same way after moving to the target host
  • Validating that dynamic surface behavior matches the source before rollout to production
  • Handling sites with client-rendered content, third-party integrations, or sheet-backed data in a migration

When not to

  • Redesign-only projects with no platform migration involved
  • When static content migration is sufficient and no dynamic behavior exists
  • Building new sites from scratch without a source to detect from

Install

These commands install from the publisher's repository and need no account.

skills CLI

npx skills add adobe/skills --skill dynamics

Installs from the repository's default branch, which may have changed since the commit we checked.

GitHub CLI 2.90 or later

gh skill install adobe/skills dynamics@940b8795c0df3e25de68ce3881dc90855129b215

Installs the commit we checked (940b879).

Copy by hand

Download the folder at 940b879 and put it in .claude/skills/dynamics for Claude Code and in .agents/skills/dynamics for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode.

Skill folder on GitHub at 940b879

Claude Code plugin

/plugin install adobe-for-creativity@claude-plugins-official

The publisher's plugin in Claude's official marketplace. It may hold more than this skill, and we have not pinned it.

Copy for your agent

A prompt for any coding agent. It installs this skill from GitHub at the pinned commit, copies the files as they are, and runs nothing unless you ask.

Prompt

Install the agent skill "dynamics" by Adobe, Inc..

Source, pinned to commit 940b8795c0df3e25de68ce3881dc90855129b215:
https://github.com/adobe/skills/tree/940b8795c0df3e25de68ce3881dc90855129b215/plugins/stardust/skills/dynamics

1. Download that folder at exactly this commit. Do not use the default branch.
2. Copy every file unchanged, keeping the folder structure, into .claude/skills/dynamics/ for Claude Code and .agents/skills/dynamics/ for Codex, Cursor, Gemini CLI, GitHub Copilot and OpenCode. Create the folders if they do not exist.
3. Do not edit the files, and do not run any script in the folder unless I ask you to.
4. When you are done, list the files you copied and where you put them.

Listing and checks: https://www.agentnative.dev/skills/adobe-inc/dynamics

SKILL.md at the pin

---
name: dynamics
description: Find, classify, triage, re-implement and verify a source site's dynamic surface (APIs, search, forms, modals, media, tags, client-rendered and sheet-backed content) during a migration to a platform. Migration-bound — invoked by prepare-migration, replica, migrate and rollout, or standalone on an already-migrated site; never for redesign-only work.
license: Apache-2.0
compatibility: Requires Node 22+, Playwright with Chromium resolvable from the project, playwright-cli on PATH, and the impeccable skill (github.com/pbakaus/impeccable) installed alongside stardust.
---

# stardust:dynamics — the dynamic surface of a migration

Static migration treats a page as content and layout. This skill treats it as **behaviour**:
everything the source renders from JavaScript, a service or a data source, and everything the
target host cannot serve the same way. Three real migrations found the same thing: the dynamic
surface is invisible to a block-scoped, pixel-verified pipeline — and invisible in a way every gate
certifies as correct. Modals rendered as links, video pills as CTAs without targets, a search box as
a 404, forms that rendered and could not submit. This skill makes that surface visible and forces a
decision per row **before import**, then proves the behaviour after delivery. It never blocks the
static path; every page must still work as a static page.

## When it runs — migration-bound, default-on there, never elsewhere

| entry point | what runs here |
|---|---|
| `prepare-migration` Phase 4.5 · `replica` Phase 2 | Phases 1–3 (detect on archetypes, classify, triage) — the pre-import gate |
| `migrate` Phase 1 | safety net: no inventory → run Phases 1–3 now (hand-run `extract → direct → prototype → migrate` never passed a gate) |
| `deploy` | reads the inventory as brief input (fallback rows, `#modal` markers, endpoint config; never flatten `client-only` / modal-bearing sections) |
| `rollout` B2 · D2 | B2 verifies the inventory against fresh evidence; D2 = Phase 4 for the `self` set + one owner batch |
| `qa` `dynamics` check · rollout report | Phase 5 replay of `parity.json` |
| **standalone** `$stardust dynamics <origin>` | all phases on a site that was already migrated without them |

`uplift`, `audit` and a bare `extract` never trigger it: dynamics is a migration concern (EDS today,
other platforms later), not a redesign one.

## Phase 1 — Detect

`node skills/dynamics/scripts/dynamics-detect.mjs --from-state stardust/state.json --out stardust/current [--reach stardust/current]`
(or `--urls` one per archetype + the home page). Depth on archetypes, reach from the crawl's
`extract --dynamics` per-page signals. Output `stardust/current/_dynamics.json` +
`dynamic-features.generated.md`. Evidence only. `reference/classes-and-signals.md`. For every
search form found, run one probe term on the SOURCE and record what it shows — the visible result
count, the top titles (≤ 3), one known hit — as `expectCount` / `expectTitles` / `expectIncludes`
on the feature's `search-query` check (Phase 5); without them the rebuilt search can only be
checked for presence.

## Phase 2 — Classify

Every finding gets a class from `L S F M V T A R X I18N CR D`; known vendors resolve to a role
through `scripts/vendors.json`; unknown third-party hosts stay visible as "inspect". When a target
host exists, `dynamics-plan.mjs --target-origin <host>` probes every recorded first-party API path
there and marks dead ones **host-bound** — the signal a pixel gate reports as "band shorter".

## Phase 3 — Triage (the gate output)

`node skills/dynamics/scripts/dynamics-plan.mjs [--target-origin …] [--migrated stardust/migrated] --out stardust/dynamics`
drafts one row per finding with the four axes pre-filled — **class · disposition ·
reproducibility · status** — plus pattern, phase and the owner decision. Curate it into
`stardust/dynamic-features.md` (subsumes the former dynamic-blocks map: § Listings contract +
§ Features + § Decision batch + § Register) and `stardust/dynamic-features-plan.md`.
`reference/triage.md` is the contract. Rules that decide the shape of the phase:

- **Reconcile against the migrated output** before scheduling anything.
- Only reproducibility `self` ships autonomously; everything else is **one decision batch**.
- Never fabricate copy for a blank client-rendered capture; never auto-wire a `regulated-pii` form;
  a search box implies a results page (class S over the site's own pages is `self` once the index
  exists); decided-out is explicit and owner-stated — a hands-off assumption never writes it.
- **Gate:** a row without a disposition fails prepare-migration 4.5 / replica Phase 2 / rollout B2.
  The static migration continues regardless.
- **Martech only on request:** when the owner asks to keep tags or consent, add `--martech`
  (`reference/martech.md`); everything is scaffolded off.

## Phase 4 — Implement (per plan phase)

From `reference/patterns.md` (catalogue + contracts + embedded example mechanisms),
`reference/listings.md`, `reference/off-origin-data.md`, `reference/forms.md`,
`reference/locale-trees.md`. Principles that held on three sites: static first, then wire ·
authoring contract before code · no owner input, no waiting (ship the interim tier, name the
decision) · existing library first (feed it, do not fork it) · decided-out is explicit. Each phase
ends with the flow verified on the published origin at 1440 and 360, a parity row, a journal entry
and a commit. Tooling: `snapshot-api.mjs`, `snapshot-forms.mjs`, `sync-sheets.mjs`. **The query index
comes from `helix-query.yaml` in the code branch** — commit, push, publish live, poll — never from a
configuration-service write; the sheet-backed interim index only when the branch is not writable
(`reference/listings.md` § Getting an index at all). **Search** follows `reference/patterns.md`
§ search-index-backed. **Listings and data-fed bands are document-first**: the document carries the item text as authored rows, the block reads the index or snapshot only for non-text fields and top-up (`reference/listings.md` § Block contract; why: `deploy/reference/ai-readability.md`).

## Phase 5 — Verify: dynamic parity

Write `stardust/dynamics/parity.json` (`reference/parity-report.md`) with replayable checks from the
closed set; `node skills/dynamics/scripts/dynamics-check.mjs --origin <published origin> [--auth-header … | --token-env SITE_TOKEN]`
writes `stardust/qa/dynamics-report.md`. **Flows, not presence.** A `search-query` check compares the
result COUNT and the top titles with the source's recorded values — a count mismatch fails. The site
secret rides an origin-scoped route filter only; third-party request statuses are recorded next to
every assertion.

## Hands-off resolutions

| gate | resolution |
|---|---|
| owner decision (backend, tags on the new host, datasource ownership, locale scope) | ship the interim tier, record the decision by name in the plan and parity report, continue — never as `decided-out`, which takes an owner's statement or a hard blocker |
| unknown third-party host | classify from the XHR body; else `T` "inspect" — never drop silently |
| blank client-rendered capture | hard content gap → human-capture batch; never migrate blank |
| regulated-pii form | UI rebuilt, submission blocked, mandatory decision |
| hand-off target unreachable from the test network | `environment-limit` row with the egress region; not a defect |
| content source cannot receive submissions | local capture with an explicit "no backend connected" message; decision named |

## Hard blockers (`event: "blocked"`)

Source unreachable from the probe network; target config not writable when endpoint indirection is
required; an interim tier that would capture regulated data (record as decided-out instead).

## Artifacts

`stardust/current/_dynamics.json`, `dynamic-features.generated.md` · `stardust/dynamics/dynamic-features.generated-plan.{md,json}` ·
`stardust/dynamic-features.md`, `stardust/dynamic-features-plan.md` (curated) · `helix-query.yaml` (listings + search, committed in the code branch) ·
`data/<feature>/*.json` + `_provenance.json` (snapshots, code bus) · `scripts/site-config.js` (owner-facing integrations, disabled) ·
`stardust/martech-contract.json`, `martech-handoff.md`, `scripts/martech.js` (opt-in) ·
`stardust/dynamics/parity.json` · `stardust/qa/dynamics-report.{md,json}` · register rows · journal + status lines.

## References

- `reference/classes-and-signals.md` — the class axis, detector procedure, vendor table policy, origin-bound probe.
- `reference/triage.md` — the four axes, rules, the inventory file format.
- `reference/patterns.md` — catalogue: contracts + verification per pattern, example mechanisms.
- `reference/listings.md` — metadata contract + query-index mechanics (formerly rollout's dynamic-listings).
- `reference/off-origin-data.md` — feeding an existing library off-origin; sheet-backed data; chrome URL space.
- `reference/forms.md` — controls not form tags; intake by content source; regulated data.
- `reference/parity-report.md` — schema, check types, rules.
- `reference/locale-trees.md` — I18N as a tree.
- `reference/martech.md` — opt-in martech contract, owner enablement, runtime, verification.
- `scripts/` — `dynamics-detect.mjs`, `dynamics-plan.mjs`, `dynamics-check.mjs`, `snapshot-api.mjs`, `snapshot-forms.mjs`, `sync-sheets.mjs`, `vendors.json`, `lib.mjs`, `martech.mjs`.

From adobe/skills at 940b879, shown as plain text under its license: Apache-2.0 (permissive). The license text is in plugins/stardust/skills/dynamics/SKILL.md.

View SKILL.md on GitHub at 940b879

Files

22 files, 184 KB in total. Each file has a sha256 in the pin's manifest; the first 12 characters are shown.

Skill folder on GitHub at 940b879
All 50 skills from Adobe, Inc.

More from Adobe, Inc.

  • adobe

    This skill provides an onboarding tour of the Adobe for creativity connector, displaying available capabilities, example workflows, and which Adobe product…

    Claude Code, Codex, Cursor +4 · about 2.2K tokens · pinned 7 days ago

  • adobe-anydocx

    This skill routes DOCX conversion tasks that have a PDF source to Adobe's pdf_export tool with the appropriate format setting.

    Claude Code, Codex, Cursor +4 · about 680 tokens · pinned 7 days ago

  • adobe-anyexcel

    This skill routes PDF-to-Excel conversion tasks to the Adobe pdf_export tool with xlsx target format.

    Claude Code, Codex, Cursor +4 · about 690 tokens · pinned 7 days ago

  • adobe-anypdf

    This skill routes PDF tasks to Adobe Acrobat tools for higher fidelity than local Python libraries.

    Claude Code, Codex, Cursor +4 · about 2.1K tokens · pinned 7 days ago

  • adobe-anypptx

    This skill routes PowerPoint conversion tasks that have a PDF source to Adobe's pdf_export tool with PPTX output format.

    Claude Code, Codex, Cursor +4 · about 670 tokens · pinned 7 days ago

  • adobe-batch-edit-photos

    This skill applies consistent visual adjustments to a set of photos so they appear edited together as a cohesive collection.

    Claude Code · about 9.9K tokens · pinned 7 days ago

  • next-bundle-optimizer

    Audits Next.js applications to identify and reduce browser bundle size and initial-load work by analyzing routes, dependencies and client outputs.

    by VercelOfficial publisher

    Claude Code, Codex, Cursor +4 · about 2.3K tokens · pinned 7 days ago

  • next-cache-components-optimizer

    Optimize Next.js routes to display meaningful UI instantly on initial load or client navigation by encoding the optimization goal as a failing…

    by VercelOfficial publisher

    Claude Code, Codex, Cursor +4 · about 5.6K tokens · pinned 7 days ago

  • next-partial-prefetching-adoption

    Enables Partial Prefetching in Next.js 16.3+ apps and guides adoption through auditing Link prefetch behavior, preserving UI in tests or manually, and…

    by VercelOfficial publisher

    Claude Code, Codex, Cursor +4 · about 6.7K tokens · pinned 7 days ago

  • remotion-interactivity

    This skill teaches how to structure Remotion code so the Studio IDE recognizes and makes it interactive.

    by RemotionOfficial publisher

    Claude Code, Codex, Cursor +3 · about 2.4K tokens · pinned 7 days ago

  • remotion-interactivity

    This skill teaches how to structure Remotion video components to unlock Studio interactivity features like click selection, drag-and-drop, resizing, rotation…

    by RemotionOfficial publisher

    Claude Code, Codex, Cursor +3 · about 4.8K tokens · pinned 7 days ago

  • remotion-maps

    This skill enables creating map-based animations with Remotion using four different mapping libraries: Mapbox, MapLibre, MapTiler, or CesiumJS.

    by RemotionOfficial publisher

    Contains scripts

    Claude Code, Codex, Cursor +3 · about 240 tokens · pinned 7 days ago

The skills listed here are third-party software, collected from public GitHub repositories as a catalog of recent skills and provided as is. Agent Native does not write or control them and is not responsible for any harm, loss or damage caused by installing or using them. Labels and checks describe what we saw at one commit and are not a guarantee. Read a skill's files before you run it. Terms of use