frontend-dev
Skill183 starsChanged 18 days agoBSD-3-ClauseView on GitHub
Frontend development for nteract UI/product surfaces, Elements fixtures, hot reload, dev daemon setup, MCP server workflow, TypeScript bindings via ts-rs, and reactive state work that touches RxJS streams, useSyncExternalStore stores, or WASM-backed notebook/runtime projections.
- Reads credentials
- Installs packages
We split this skill into the rules it gives an agent
42 rules. 0 are common, 16 are distinctive, and 26 are very specific to this project.
0
Common
Most of the 12 edited versions we read keep these.
16
Distinctive
This author's own choices. Worth a look.
26
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill for UI/product work and for TypeScript state surfaces that feed shared notebook UI.
- Distinctive: line 31
Use this mode when the user asks to iterate on UI, including notebook UI, Elements docs, rail/sidebar surfaces, toolbar chrome, cell …
- Distinctive: line 38
Start a task branch early and treat it as an exploratory design branch.
- Distinctive: line 40
Prefer real fixture notebooks and existing Elements scenarios over synthetic empty states.
- Very specific: line 41
If the production app is hard to drive, prototype the visual language in apps/elements, then pull only the durable parts back into the main …
- Very specific: line 43
Add or update an Elements page when a new surface needs product/design review: create the fixture component in …
- Distinctive: line 47
Treat Elements fixtures as stable review artifacts: keep data deterministic, avoid live network dependencies, and cover dense, empty, …
- Distinctive: line 50
Commit each promising design state as a separate conventional commit so the user can review, cherry-pick, or backtrack.
- Distinctive: line 52
Do not rush to PR until there is a tangible visual direction the user likes.
- Distinctive: line 57
Use color as subtle state and focus language, not decoration.
- Very specific: line 60
Use shared shadcn/nteract primitives from src/components/ui where they fit.
- Very specific: line 63
Avoid duplicating identity/mode/status labels when another nearby control already carries that meaning.
- Very specific: line 65
Keep desktop-local identity quiet.
- Very specific: line 76
Check desktop and narrow widths before calling the design done.
- Distinctive: line 77
Use Playwright or Browser screenshots for at least one wide and one constrained viewport.
- Distinctive: line 80
If motion is involved, verify fast-path behavior so short executions do not flicker.
- Distinctive: line 84
Use this subsection for hosted notebook home, sharing, workstation, auth/session, and public-notebook polish.
- Very specific: line 92
Keep /n useful as a notebook home, not just a file list: continuation, ownership/access state, created/open flows, and workstation/runtime …
- Distinctive: line 95
Treat notebook titles as first-class product data.
- Very specific: line 104
Do not let editor, edit mode, or a live runtime_peer alone surface run, restart, or interrupt controls.
- Very specific: line 112
Avoid first-frame empty states when the route already owns the data.
- Very specific: line 115
Do not solve app-shell data freshness by overusing Automerge when the source of truth is an ACL/catalog/session resource.
- Distinctive: line 118
If browser auth is localStorage-only, the Worker cannot server-render authenticated HTML on first navigation.
- Distinctive: line 131
When adding new API facts for UI, keep them structured and host-owned.
- Very specific: line 137
Use this subsection when editing RxJS or shared-store code such as packages/runtimed/src/sync-engine.ts, …
- Very specific: line 151
Start from the durable owner: NotebookDoc, RuntimeStateDoc, CommsDoc, CommentsDoc, or host-owned APIs/session facts.
- Very specific: line 154
Prefer WASM-emitted changesets and projections (CellChangeset, ExecutionViewChangeset, outputIdChanges$, commentsProjection$, …
- Very specific: line 159
Keep host policy host-owned: D1/ACL/OIDC/session state, Tauri daemon lifecycle, filesystem/package-manager access, and workstation source …
- Very specific: line 166
Keep Subject, BehaviorSubject, and ReplaySubject private.
- Very specific: line 168
Prefer one authoritative subject plus select(project, equals) style projections with distinctUntilChanged.
- Very specific: line 171
Keep stream logic inside .pipe() where it is composable.
- Very specific: line 177
Put catchError inside the inner observable when the outer session stream must keep running.
- Very specific: line 180
Use shareReplay with an explicit lifetime.
- Very specific: line 187
Use useSyncExternalStore for shared notebook store hooks.
- Very specific: line 202
Add virtual-time tests (rxjs/testing or VirtualTimeScheduler) for timers, throttles, cancellation, and ordered stream behavior.
- Distinctive: line 204
Add store-level tests for synchronous snapshot seeding, deduped emissions, loaded/default-state gates, and stale-write guards.
- Distinctive: line 206
If a change crosses the WASM projection boundary, regenerate or freshness-check runtime WASM artifacts with the repo xtask flow before …
- Very specific: line 420
Run cargo test -p runtimed-client --features ts-bindings from the repo root.
- Very specific: line 451
Use the crate's optional ts-rs dependency and generation feature:
- Very specific: line 462
Run cargo test -p runtimed-client --features ts-bindings to generate the TypeScript file
- Very specific: line 495
App says "Dev daemon not running": Start cargo xtask dev-daemon in another terminal.
- Very specific: line 497
Port conflicts with Vite: Default 5174 may conflict across worktrees.
“Common” is measured: kept by at least 6 in 10 of the 12 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Frontend Development
Use this skill for UI/product work and for TypeScript state surfaces that feed shared notebook UI. If the task is primarily Automerge protocol, daemon/kernel execution, MCP session lifecycle, or release mechanics, use the more specific repo skill for that subsystem first and return here only for app integration.
Quick Reference
| Task | Command |
| Hot reload assets | cargo xtask vite |
| Dev daemon | cargo xtask dev-daemon |
| Human app launch | cargo xtask notebook |
| Human attach to Vite | cargo xtask notebook --attach |
| Full debug build | cargo xtask build |
| Rust-only rebuild | cargo xtask build --rust-only |
| Human bundled launch | cargo xtask run |
| One-shot setup | cargo xtask dev |
| Lint/format | cargo xtask lint --fix |
| nteract-dev MCP server | cargo xtask run-mcp |
| Regenerate TS bindings | cargo test -p runtimed-client --features ts-bindings |
Design Exploration Mode
Use this mode when the user asks to iterate on UI, including notebook UI, Elements docs, rail/sidebar surfaces, toolbar chrome, cell affordances, runtime state language, or says the goal is to make the design feel fluid with natural grouping.
Working Shape
- Start a task branch early and treat it as an exploratory design branch.
- Bring up the dev daemon and Vite unless the user only wants discussion.
- Prefer real fixture notebooks and existing Elements scenarios over synthetic empty states.
- If the production app is hard to drive, prototype the visual language in
apps/elements, then pull only the durable parts back into the main app. - Add or update an Elements page when a new surface needs product/design review:
create the fixture component in
apps/elements/components/*-example.tsx, document it inapps/elements/content/docs/*.mdx, and link it fromapps/elements/app/page.tsxplusapps/elements/content/docs/index.mdx. - Treat Elements fixtures as stable review artifacts: keep data deterministic, avoid live network dependencies, and cover dense, empty, error, and narrow viewport states when the surface needs them.
- Commit each promising design state as a separate conventional commit so the user can review, cherry-pick, or backtrack.
- Do not rush to PR until there is a tangible visual direction the user likes.
Design Bias
- Make UI feel like it belongs to the document, not like legacy app chrome bolted around it.
- Use color as subtle state and focus language, not decoration.
- Favor fluid separators, ribbons, inline controls, and calm state vocabulary over raised pills, bubbles, boxed badges, or noisy status text.
- Use shared shadcn/nteract primitives from
src/components/uiwhere they fit; add new primitives through the repo shadcn workflow instead of one-off component copies. - Avoid duplicating identity/mode/status labels when another nearby control already carries that meaning.
- Keep desktop-local identity quiet; reserve explicit auth/account chrome for cloud surfaces.
- For cloud, separate app-level controls from notebook-level controls: presence, connection, sharing, auth, and view/edit mode belong in cloud/app chrome; execution, runtime/package language, and cell insertion belong in notebook chrome.
- For product-surface PRs and docs, describe nteract in concrete system terms: live documents, explicit runtime state, workstation/compute attachment, and collaboration mechanics. Avoid named comparisons to other products in PR descriptions or shipped docs.
Visual Verification
- Check desktop and narrow widths before calling the design done.
- Use Playwright or Browser screenshots for at least one wide and one constrained viewport.
- Inspect common states: ready, queued, running, completed, failed, hidden input/output, markdown-heavy notebooks, and package/outline rail panels.
- If motion is involved, verify fast-path behavior so short executions do not flicker.
Hosted Product Surface Work
Use this subsection for hosted notebook home, sharing, workstation, auth/session, and public-notebook polish. These surfaces are app chrome around notebooks; they should not fork cell, output, rail, toolbar, or execution UI.
Product Shape
- Prototype in
apps/elementsfirst when the visual or interaction model is still uncertain, then promote only stable pieces intoapps/notebook-cloud. - Keep
/nuseful as a notebook home, not just a file list: continuation, ownership/access state, created/open flows, and workstation/runtime readiness should read together. - Treat notebook titles as first-class product data. Untitled notebooks must degrade cleanly, but a dashboard full of IDs is a signal that title capture, rename, or cleanup tooling needs attention.
- Share previews and OG metadata must be safe by default. Private notebooks should not leak content through server-rendered metadata; public notebooks should use explicit published/revision-safe facts.
- Workstation state belongs to host/app chrome until it becomes the active notebook runtime. Runtime controls stay in the shared notebook toolbar.
- Hosted compute is owner-only until an explicit execute capability exists.
Do not let
editor, edit mode, or a liveruntime_peeralone surface run, restart, or interrupt controls. - R2 snapshot bundles and D1 catalog/ACL/revision rows are the durable hosted truth. Treat Durable Object storage as live-room recovery/cache unless a new ADR changes that boundary.
App-Shell Latency
- Avoid first-frame empty states when the route already owns the data. Prefer
server bootstrap or retained state for app-shell data such as
/nlists and sharing ledgers. - Do not solve app-shell data freshness by overusing Automerge when the source of truth is an ACL/catalog/session resource. Use Automerge for notebook and runtime documents; use host APIs for catalog, auth, sharing, and account data.
- If browser auth is localStorage-only, the Worker cannot server-render authenticated HTML on first navigation. A first-party session/cookie layer can bootstrap app-owned pages, but room WebSocket credentials should remain explicit/ticketed and output frames must stay on the separate isolated origin.
Projection Discipline
- Derive dashboard/list/sidebar summaries in pure projection helpers outside component render bodies. React should consume stable arrays/objects rather than recreating ad hoc projections in JSX.
- For live notebook content, consume
CellChangesetand shared narrow projection helpers when possible. Full live-cell rematerialization is a bootstrap or fallback path, not the steady-state Cloud projection model. - When adding new API facts for UI, keep them structured and host-owned. Avoid parsing principal strings, display labels, or notebook IDs in React except as compatibility fallback.
Reactive State and WASM Projection Work
Use this subsection when editing RxJS or shared-store code such as
packages/runtimed/src/sync-engine.ts,
packages/runtimed/src/observable-store.ts,
packages/runtimed/src/poll.ts,
packages/runtimed/src/*store*.ts,
src/components/notebook/state/*,
apps/notebook/src/lib/notebook-sync-store-bridge.ts,
apps/notebook-cloud/viewer/*store*.ts,
apps/notebook-cloud/viewer/*facts*.ts,
apps/notebook-cloud/viewer/use-cloud-*-store.ts, or
apps/notebook-cloud/viewer/browser-signals.ts.
State Boundary
- Start from the durable owner:
NotebookDoc,RuntimeStateDoc,CommsDoc,CommentsDoc, or host-owned APIs/session facts. React state is for local UI affordances, not another copy of document/runtime truth. - Prefer WASM-emitted changesets and projections (
CellChangeset,ExecutionViewChangeset,outputIdChanges$,commentsProjection$,notebookSyncApplied$) over second-pass TypeScript diffs. - Shared components should consume shared stores. Host code should inject source facts and side-effect adapters, not duplicate projection logic.
- Keep host policy host-owned: D1/ACL/OIDC/session state, Tauri daemon
lifecycle, filesystem/package-manager access, and workstation source facts do
not belong in
runtimed-wasmor shared React stores. Project their results only when shared UI needs them.
RxJS Shape
- Keep
Subject,BehaviorSubject, andReplaySubjectprivate. Expose readonlyObservablefields through.asObservable(). - Prefer one authoritative subject plus
select(project, equals)style projections withdistinctUntilChanged. Add structural comparators when the projector allocates arrays or objects. - Keep stream logic inside
.pipe()where it is composable. Manual.subscribe(...)belongs at bridge edges that drive imperative sinks; collect those subscriptions in aSubscriptionand tear them down. - Choose flattening operators by semantics:
switchMapfor latest-only work,concatMapfor ordered materialization or writes,mergeMapfor independent frame/event expansion, andexhaustMapfor duplicate-submit suppression. - Put
catchErrorinside the inner observable when the outer session stream must keep running. Avoid letting one bad frame, blob fetch, or projection kill a long-lived bridge. - Use
shareReplaywith an explicit lifetime.refCount: falseis appropriate for app/session-lifetime shared store projections that must keep one cache;refCount: trueis safer for cold sources whose subscription should end when consumers detach.
React Binding
- Use
useSyncExternalStorefor shared notebook store hooks. The observable adapted byuseRuntimeProjection-style helpers must emit synchronously on subscribe, usually throughBehaviorSubject,ReplaySubject(1), or a seededshareReplayprojection. - Subscribe to the narrowest projected fact the UI needs instead of the whole runtime or notebook snapshot. This avoids re-rendering on unrelated daemon ticks and keeps Desktop and Cloud behavior converged.
- For async materialization or blob/output resolution, preserve ordering with
concatMapor an explicit queue. After everyawait, check that the live handle/session/auth/endpoint or activation epoch still matches before writing stores. - Reset paths must invalidate stale async writes, not just clear visible state.
Verification
- Add virtual-time tests (
rxjs/testingorVirtualTimeScheduler) for timers, throttles, cancellation, and ordered stream behavior. - Add store-level tests for synchronous snapshot seeding, deduped emissions, loaded/default-state gates, and stale-write guards.
- If a change crosses the WASM projection boundary, regenerate or freshness-check runtime WASM artifacts with the repo xtask flow before trusting TypeScript results.
Module-Singleton Source Stores
For non-CRDT async sources (auth, catalog, access requests, workstations) held
in a module-level ObservableStore singleton, follow Decision 8
(docs/adr/frontend-sync-bridge.md). The store outlives every component, so
each async completion is a stale-write risk:
- Components consume named domain hooks. Components import
useCloudAuthState/useHostedCatalogAuth/useCloudWorkstationsRegistry, neverstore.select(...)inline in a render body and neverobservable-binding.tsdirectly. Desktop and cloud share one binding. - Resolve store instances through context. The store stays a module
singleton for boot, drivers, and initial snapshot reads, but each domain hook
resolves its instance from
useCloudStores()(cloud-stores-context.ts), whose default is the singleton bundle. Production mounts no provider and uses those same instances; a test or Elements fixture mountsCloudStoresProviderwith its own instances and the subtree reads those. The provider overrides consumption, never activation - its owner activates the instances it supplies. A controller that dispatches actions on the same store reads it from the same context too, so an override gets a coherent store. - Check request identity after every await. Poll ticks and
imperative actions capture
{epoch, auth reference, endpoint}when the request starts; after everyawait(success, error, and any follow-up refetch), discard the result if the identity changed. Checking only the first await leaves later completions able to write stale state. - Invalidate pending work and clear its indicators.
dispose,reset, and a signed-out closed gate bump the activation epoch so captured requests become stale (a transientloadinggate is recoverable and keeps in-flight work alive); a dropped completion also clears any indicator it wrote (by object-reference ownership, so it can never clobber a newer identity's own state). - Restart after-settle polls on completion. A self-scheduling
poll re-arms via
repeat()on completion, so a swallowed inner rejection cannot kill the loop. KeepcatchErroron the inner fetch. - Route fixed-rate triggers through one
exhaustMap. Triggers that must not overlap (interval tick, visibility rise, manual wakeup) feed a singleexhaustMap; do not give each trigger its own guard. After-settle stores instead serialize manual refresh and mutation refetches through a dedicatedconcatMapaction stream outside the poll loop, preserving action order and polling cadence. - Inject every clock.
scheduler,now, and the network operations areactivate(deps)arguments, so tests run entirely on virtual time and the suite checks cadence, gates, aborts, and discarded stale results deterministically. - List every field in the comparator's manifest.
distinctUntilChangeduses a namedfooEquals(a, b)with a colocatedsatisfies Record<keyof T, true>manifest. The manifest forces every key to be listed when the type grows; it does not prove every key is compared - treat a break as a prompt to revisit the comparator body, not proof of correctness. A projection that allocates an array or object each tick needs a structural comparator (length plus per-element identity/fields); a reference check on a newly allocated value deduplicates nothing. A missing manifest key surfaces as a tsc error (pnpm --dir apps/notebook-cloud typecheck); the node test script alone will not catch it. - Read
loaded$to distinguish loading from loaded empty state. The state subject emits its seeded default before the gate opens (state emits first, then the gate); a consumer that must tell "loading" from "loaded empty" readsloaded$, never infers from an empty snapshot.
Hot Reload
Best for UI/React development. Start the dev daemon and Vite from agent terminals; let the human launch the Tauri GUI from their own terminal.
Agent terminals:
cargo xtask dev-daemon
cargo xtask viteHuman terminal:
cargo xtask notebook --attachReact changes hot-reload through the Vite dev server on port 5174.
Multi-Window Testing
Closing the first Tauri window kills Vite. Keep Vite alive independently:
# Agent terminal: standalone Vite (stays running)
cargo xtask vite
# Human terminal(s): attach Tauri to existing Vite
cargo xtask notebook --attachDebug Build (cargo xtask build + run)
Bundles frontend assets into the binary. Emits JS source maps for native webview devtools.
cargo xtask build # Full build (frontend + Rust)
cargo xtask build --rust-only # Skip frontend rebuild (fast Rust iteration)
cargo xtask run # Run the bundled binary
cargo xtask run path/to/notebook.ipynbDev Daemon
Each worktree gets an isolated daemon in dev mode.
# Agent terminals
cargo xtask dev-daemon
cargo xtask vite
# Human terminal if they want the full setup flow
cargo xtask dev
cargo xtask dev --skip-install --skip-build # Fast repeatcargo xtask dev-daemon, cargo xtask notebook, and cargo xtask run-mcp derive the worktree env automatically. Set RUNTIMED_DEV=1 and RUNTIMED_WORKSPACE_PATH="$(pwd)" only for raw ./target/debug/runt ... commands.
Useful Daemon Commands
./target/debug/runt daemon status # Check daemon state
./target/debug/runt daemon logs -f # Tail logs
./target/debug/runt ps # List running kernels
./target/debug/runt notebooks # List open notebooksMCP Server Development
nteract-dev (recommended)
cargo xtask run-mcp # Start dev MCP server
cargo xtask run-mcp --print-config # Editor config outputStarts dev daemon, launches nteract-dev, spawns child runt mcp, proxies notebook tool calls, watches for file changes, and hot-reloads.
nteract-dev Tools
| Tool | Purpose |
up | Idempotent bring-up. Args: vite=true, rebuild=true, mode="debug"|"release" |
down | Stop Vite. daemon=true also stops daemon |
status | Read-only report of child, daemon, processes, build mode |
logs | Tail daemon log |
vite_logs | Tail Vite log |
Hot Reload Watches
Watching is opt-in with NTERACT_DEV_WATCH=1. Startup and owner-mode
up rebuild=true prepare generated assets before compiling the child.
Renderer/widget source edits rebuild affected artifacts and refresh the child
catalog only if its binary changes. Python changes restart the child; Rust
binding changes also check the native bindings unless SKIP_MATURIN=1.
See MCP renderer development for asset receipts, dependency order, attach/isolated behavior, and host restart limitations. MCP list-change notifications do not force an existing host widget to reload.
Direct Mode (no proxy)
cargo xtask dev-daemon # Terminal 1
./target/debug/runt mcp # Terminal 2 (Rust-native, no Python)Zed Integration
Codex app/CLI reads .codex/config.toml from the project. Keep the
project-scoped server named nteract-dev and pinned to the repo root:
[mcp_servers.nteract-dev]
command = "cargo"
args = ["xtask", "run-mcp"]
cwd = "."
startup_timeout_sec = 120
[mcp_servers.nteract-dev.env]
NTERACT_DEV_MODE = "attach"
RUNTIMED_DEV = "1"
SKIP_MATURIN = "1"Installed Codex plugin servers such as nteract-notebook, nightly, or older
notebook aliases target release/plugin daemons. Do not use them for source
development against a local Browser/Vite worktree.
.zed/settings.json (gitignored):
{
"context_servers": {
"nteract-dev": {
"command": "cargo",
"args": ["run", "-p", "mcp-supervisor"],
"cwd": ".",
"env": { "NTERACT_DEV_MODE": "owner", "RUNTIMED_DEV": "1" }
}
}
}TypeScript Bindings (ts-rs)
Types in src/bindings/ are auto-generated from Rust via ts-rs. Edit the Rust source, not the generated TypeScript.
runtimed-client gates generation behind its opt-in ts-bindings feature.
Run cargo test -p runtimed-client --features ts-bindings from the repo root;
plain cargo test does not enable these exports. The feature is declared in
crates/runtimed-client/Cargo.toml.
How It Works
Gate the TS import, derive, and export on ts-bindings, as in
crates/runtimed-client/src/settings_doc.rs:
#[cfg(feature = "ts-bindings")]
use ts_rs::TS;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "ts-bindings", derive(TS))]
#[serde(rename_all = "lowercase")]
#[cfg_attr(feature = "ts-bindings", ts(export))]
pub enum ThemeMode {
System,
Light,
Dark,
}Generates src/bindings/ThemeMode.ts:
export type ThemeMode = "system" | "light" | "dark";Adding New Bindings
- Use the crate's optional
ts-rsdependency and generation feature:[features] ts-bindings = ["dep:ts-rs"] [dependencies] ts-rs = { workspace = true, optional = true } - Gate the import, derive, and export as shown above
- Run
cargo test -p runtimed-client --features ts-bindingsto generate the TypeScript file - Import from
src/bindings/index.ts:import type { MyNewType } from "@/bindings";
Configuration
Export directory set in .cargo/config.toml:
[env]
TS_RS_EXPORT_DIR = { value = "src/bindings", relative = true }Zed Editor Tasks
Pre-configured in .zed/tasks.json (cmd-shift-t):
| Task | Command |
| Dev Daemon | cargo xtask dev-daemon |
| Human Dev App | cargo xtask notebook |
| Daemon Status | ./target/debug/runt daemon status |
| Daemon Logs | ./target/debug/runt daemon logs -f |
| Format | cargo xtask lint --fix |
| Setup | pnpm install && cargo xtask build |
Common Gotchas
Daemon code changes not taking effect: Restart cargo xtask dev-daemon in dev mode. In production: reinstall the .app or run ./scripts/install-nightly.
App says "Dev daemon not running": Start cargo xtask dev-daemon in another terminal.
Port conflicts with Vite: Default 5174 may conflict across worktrees. Use cargo xtask build + run to avoid Vite, or use CONDUCTOR_PORT for automatic assignment.
Frontend changes not showing: With cargo xtask notebook they hot-reload. With cargo xtask run you need cargo xtask build first. With --rust-only frontend is intentionally skipped.
Other versions19 projects use a version of this.
Word for word · 1
- nteract/nteract★ 183100% same
Edited · 0
None found.
Wrote their own version · 18
- MiniMax-AI/skills★ 14ksame name
- marmelab/atomic-crm★ 1.4ksame name
- doccker/cc-use-exp★ 1ksame name
- HHU3637kr/skills★ 146same name
- app-dev-panel/app-dev-panel★ 91same name
- HK-hub/AgentSkills★ 6same name
- jhy0285/monofield★ 5same name
- coroboros/agent-skills★ 4same name
- Douglasst102/AgentSkills★ 4same name
- haxqer/skills★ 4same name
8 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository9 other files it gives its agents.
- AGENTS.mdAGENTS.md
- architectureSkill
- automerge-syncSkill
- daemon-devSkill
- execution-pipelineSkill
- mcp-session-lifecycleSkill
- nteract-diagnosticsSkill
- releasingSkill
- testingSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

