Files
Ignacy Łątka 8b56da16bb docs(tools): give a device id back to the places that still need one
Relaxing `udid` removed the session-opening `list-devices`, and the guidance was
rewritten to match. That left a set of places that still need a real id and no
longer say where it comes from — the resolved device is consumed inside the MCP
adapter and never reaches the model, so an agent that follows the new convention
holds no id at all.

- `stop-all-simulator-servers` wants `devices: [...]` scoped to the session's
  devices. The rules file got the missing clause; the MCP `instructions` string
  — which reaches every client ahead of any skill — and two skills did not.
  `argent-qa-flows` spells out the damage itself: an unscoped call reaps every
  other agent's devices, and its step 7 repeats it.
- `argent-android-emulator-setup` made step 1 skippable while step 3 and the
  teardown line still run `adb -s <serial>`, which step 1 was the only source of.
- `propose_variant`, `flow-add-step`'s nested args and the profilers' `device_id`
  are never auto-filled, and the six skills that use them carried no
  `list-devices` at all. `argent-lens` said "Always pass `udid`" and routed to a
  setup skill that now says there is nothing to find.
- `argent-react-native-app-workflow` was the one interaction-adjacent skill left
  unedited, still reading "pass device id + bundle id" for five relaxed tools.
- `argent-tv-interact` marked `udid` required in five tool shapes ten lines below
  the line saying it is optional, in a file that marks optional params with `?`.
- The docs page's exception list gave `run-sequence` as keeping an explicit
  target in the sentence that says its target resolves, omitted `flow-add-step`
  — the one call that hard-refuses a device-less invocation — and disagreed with
  the rules file's list of the same three groups.
- `tv-remote` and `screenshot-diff` each ship a description contradicting the
  optional-`udid` hint appended beside it, `list-devices` omitted `ios-remote`
  from a discriminator list its own refusals now print, and `types.ts` promised
  "the single booted device this tool supports" — the phrasing this branch
  removed from the user-facing twin and pinned a negative assertion against.

Also drops the arithmetic from the abort comment: the enumeration's own ceiling
is at least the MCP client's 30s budget, so that abort mostly lands after the
check, not during the fan-out. The check earns its place on the cases that do
reach it — a Ctrl-C, an editor cancel, a request whose budget went on an upload.
2026-09-02 15:37:58 +02:00
..

Argent documentation

The Argent documentation site, published at docs.swmansion.com/argent.

Built with Docusaurus and the shared Software Mansion docs theme, @swmansion/t-rex-ui.

The site has no landing page of its own. That is argent.swmansion.com; the root route here redirects to the getting started page.

Development

This site lives at packages/docs but is a standalone npm project with its own lockfile, excluded from the root packages/* workspace glob so its dependencies stay out of the toolkit's lockfile. ESLint still runs from the repo root (npm run lint) with the shared eslint.config.mjs; install this package's dependencies first so the type-aware rules can load tsconfig.json.

cd packages/docs
npm install
npm start        # dev server on http://localhost:3000/argent/
npm run build    # production build into packages/docs/build
npm run serve    # serve the production build

Layout

Path Contents
docs/ Documentation pages (MDX), grouped into sidebar categories
src/pages/ The root route, which redirects into the docs
src/css/ Argent color palette, typography and theme overrides
src/components/ Components used from MDX, registered in src/theme/MDXComponents.tsx
static/img/ Logos, favicon and other static assets
static/video/ Encoded screen recordings, see Videos

Colors in src/css/colors.css are derived from the Argent brand palette used on argent.swmansion.com.

Videos

Screen recordings go through scripts/encode-video.sh, which produces a web-sized MP4 and a poster frame in static/video/:

npm run encode:video -- ~/Desktop/tap-flow.mov

Record in the simulator or with QuickTime, then encode. Never commit a GIF: the same ten second capture is around thirty times larger as a GIF than as H.264.

Embed the result with the <Video> component, which is global in MDX and needs no import:

<Video src="/video/tap-flow.mp4" portrait caption="Tapping through the sign-in flow" />
Prop Meaning
src Site-relative path to the MP4
portrait Caps the height at 480px, for simulator and emulator captures
poster Poster frame; defaults to the sibling .jpg the encode script writes
caption Optional caption rendered below the clip
width / height Intrinsic pixel size, reserves space so the page does not reflow

Clips are muted and loop on their own. Nothing downloads until the player nears the viewport, playback pauses while it is off screen, and readers who ask for reduced motion get a paused player with controls instead of a loop.

Once static/video/ grows past a few tens of megabytes, move the files behind a CDN and pass absolute URLs to src rather than growing the git history.