* feat(web): first-run agent onboarding + Getting started revamp New signups land on #connections (the default view for any signed-in arrival with no deep link). The welcome modal grows two steps after team creation: an agent picker (OpenClaw / Hermes / Claude.ai / Claude Code / Codex + more) and the per-agent setup line. The old docked "Getting started" stepper (onb.*) is removed entirely. Getting started is rebuilt as numbered cards — ① Set up your <agent> (setup line + the already-created API key, masked) and ② Try it out (four copyable live-data prompts, each verified through the catalog, plus OAuth connect chips for social/ads/site-SEO) — moved to the top of the nav, above Catalog. Main content column is now centered; "Your tools" renamed to "Your vault"; page titles reworded. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * feat(skill): rename the installed skill tools-registry -> treg The skill installed into agents was named/foldered "tools-registry", which matched neither the `treg` command nor the brand agents see — confusing both agents and humans. Now: skill.md frontmatter name is treg, `treg skill bootstrap` writes <agent>/skills/treg/ (and retires a leftover tools-registry/ folder when it holds only our SKILL.md), install.sh's fallback path and the Claude plugin folder follow suit. The PyPI package name (tools-registry) is unchanged. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * feat(skill): sell the skill in its description, not describe it The old description led with mechanics (catalog vs own-tools split). Now it leads with when to reach for it — data access (SEO/SERP, keyword volume, backlinks, social & trends, enrichment, ads, scraping) and acting on connected accounts (posting, ad campaigns, site SEO via OAuth) — and pitches treg as OpenRouter for agent tools. Kept YAML-safe (no ": " inside the plain scalar). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * feat(agents): one setup line everywhere — llms.txt carries the flow The ~30-line "Agent instruction" duplicated what llms.txt and the skill already teach (catalog search, prices, scan/upload); the only things a prompt can carry that a file cannot are the token, the team, and the authorization to run. So the instruction everywhere is now exactly: set up treg — {BASE}/llms.txt with token <T>, team <slug> (welcome modal, Getting started, sidebar copy row, preview modal — all one buildAgentPrompt). llms.txt absorbs the rest: a "set up treg" agent flow (permission once, work straight through, prove it with one relevant call), the star-the-repo ask after first real data, and its money rules drop the confirm-price-with-the-human ritual — prices are visible, calls are fractions of a cent, just call. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * feat(catalog): Try-it is the primary CTA, with agent/CLI/API/manual tabs On an endpoint row, "▶ Try it" is now the ink-fill primary action and the old "Connect {provider}" is demoted to a secondary "Bring your own key" (its real meaning — your key wins over treg's and isn't metered). The Try-it drawer gains four tabs (AI Agent default): AI Agent shows a one-line setup (team + token embedded here only, a run-now context) and a ready "Use treg to call <id>" prompt; CLI shows install/login → catalog get → the filled treg call; API shows the curl /call/ form with the token header (+ X-Treg-Org in session mode); Manual is the existing live test form. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * fix(catalog): OAuth endpoints keep Connect as primary; fix dead Manual Run Which run action is primary now depends on the provider's auth_kind (mkOauth): OAuth providers (act as your account, can't use treg's key) keep Connect as the ink-fill primary with Try-it secondary; key/token providers keep Try-it primary with "Bring your own key" secondary. The Manual tab no longer strands a disabled Run hugging the tab bar when the endpoint isn't callable from this org — it shows a banner pointing at Connect / the AI Agent / CLI / API tabs instead, and a "no parameters — just run it" hint for the param-less callable case. Retitles the markup test to the new run-actions intent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 * feat(landing): 0% additional fee band after pay-for-results Centered pixel-type headline plus a dark mono equation card that types out "provider rate + $0.000 markup = your price" on scroll, with a one-line note that treg earns on vendor volume pricing, not markup. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018UnVdcbzN8H4mXQaTkHdvD * feat(web): billing — one-click fund cards + auto top-up toggle Add funds is now four preset cards ($5/$10/$25/$50); clicking one goes straight to Stripe checkout — no dropdown-then-button. Auto top-up is a toggle: switching it on reveals the settings panel (amount, threshold, the PSD2 consent mandate, confirm); the toggle alone can only disarm or open the panel — arming still requires the recorded consent. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01D8t2aMqbfstGqStPLsoxDq * feat(web): default landing is Getting started, not the catalog New signups (after the welcome modal) and every signed-in arrival at /app with no deep link or hash now land on #start (Getting started) instead of #connections. welcomeFinish and both boot paths updated. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01U72hGQwYvVSyzh7XGqNra9 --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
treg — Codex / ChatGPT plugin
A distribution wrapper, not a second product. It ships the same skill that
treg skill bootstrap already installs into ~/.codex/skills/, packaged so people find treg by
searching the plugin directory that ChatGPT and Codex share.
plugin/
├── .codex-plugin/plugin.json the manifest + the listing copy
├── skills/treg/ GENERATED — do not edit by hand
└── assets/ icon + logo (▚ in clay #e0703f)
The skill is generated
src/treg/web/skill.md is the one source. It is served at /skill.md, written into every agent by
treg skill bootstrap, and rendered into this plugin by:
python3 scripts/build_plugin.py # regenerate
python3 scripts/build_plugin.py --check # fail if stale (also a test)
Two things differ from the served copy, both because a plugin arrives where the server does not:
{BASE}is baked to the public deployment. The server substitutes that placeholder per request; nothing substitutes it inside an installed plugin, so a raw copy would ship the literal.- A bootstrap section is prepended. Every other install path implies the CLI already exists —
treg skill bootstraponly runs becausetregis installed. This is the one path where the skill can land on a machine with no treg at all, and without it a first run ends incommand not found.
Never edit skills/treg/SKILL.md. Change src/treg/web/skill.md and regenerate;
tests/test_plugin.py fails if the two disagree.
Testing it locally (verified with codex-cli 0.145.0)
No desktop app required — the Codex CLI installs and loads plugins itself.
The marketplace manifest is a user-side file and is deliberately not part of this plugin. It
lives at ~/.agents/plugins/marketplace.json, and its path is resolved relative to $HOME,
not to the manifest and not as an absolute path:
{
"name": "superdesign-local",
"interface": { "displayName": "superdesign (local dev)" },
"plugins": [
{
"name": "treg",
"source": { "source": "local", "path": "./devs/superdesign/tools-registry-oss/plugin" },
"policy": { "installation": "AVAILABLE", "authentication": "ON_INSTALL" },
"category": "Developer Tools"
}
]
}
Then:
codex plugin list # treg@superdesign-local — not installed
codex plugin add treg@superdesign-local # the @marketplace suffix is REQUIRED
codex plugin list # installed, enabled, 0.7.0
Installed copies land in ~/.codex/plugins/cache/$MARKETPLACE/$PLUGIN/$VERSION/. Confirm the skill
actually loaded — it should appear as treg:tools-registry:
codex exec --skip-git-repo-check "List the names of every skill you have available."
codex plugin marketplace add ./plugin does not work: that command expects a marketplace root,
and this directory is a plugin.
The listing copy is the product
category and capabilities are not guesses — they are what OpenAI's own shipped plugins use
(github is Developer Tools + ["Interactive", "Write"]; gmail is Communication;
openai-templates is Productivity). The published docs show neither list, so read a real installed
manifest under ~/.codex/plugins/cache/ before inventing a value.
Before submitting through OpenAI's plugin portal, check the manifest version matches
pyproject.toml (a test enforces this), and that the copy still describes what treg does: it
compares providers and the agent chooses. treg does not route automatically and does not fail
over — the landing page had to be corrected for that claim once already, and a directory listing is
harder to correct than a web page. A test guards this too.