agentleFS
Ripple-TSRipple-TS/ripple/.github/copilot-instructions.md

ripple

Copilot instructions7.4k starsChanged 9 months agoMITView on GitHub

Ripple is a TypeScript-first UI framework and monorepo maintained by Dominic Gannaway. This repository owns the Ripple runtime, Ripple-specific compiler target, adapters, scaffolding, and framework integrations. The shared .tsrx language, compiler core, non-Ripple targets, language tooling, editor plugins, and syntax grammars are maintained in tsrx-org/tsrx. Use the nearest live source rather than historical summaries: - website/public/llms.txt for Ripple runtime APIs, target behavior, and Ripple-specific authoring guidance - tsrx.dev for target-neutral TSRX syntax, tooling, and the language specification - README.md for…

We split this copilot-instructions.md into the rules it gives an agent

17 rules. About 0 are common, 9 are distinctive, and 8 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈9

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 8

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use the nearest live source rather than historical summaries:

    line 12
  2. Distinctive:

    If a guide conflicts with nearby code or package READMEs, trust the nearby code and current package docs.

    line 24
  3. Distinctive:

    After changing RuleSync content, run:

    line 67
  4. Very specific:

    Default component files are .tsrx.

    line 75
  5. Very specific:

    Prefer the current TSRX component shape: function Component(props) @{ ...

    line 77
  6. Distinctive:

    When a template scope mixes TypeScript setup with rendered output, setup statements come first and the scope finishes with one output node: …

    line 83
  7. Very specific:

    Use @if, @for, @switch, and @try for template control flow.

    line 88
  8. Very specific:

    Use pnpm for all package management and workspace scripts.

    line 105
  9. Distinctive:

    Follow the conventions of the package you are changing.

    line 106
  10. Distinctive:

    Prefer the smallest validation that covers the touched surface.

    line 125
  11. Distinctive:

    Add a changeset for user-facing package changes.

    line 146
  12. Very specific:

    Use patch changesets for ordinary changes.

    line 149
  13. Very specific:

    Prefer Ripple docs in website/public/llms.txt and target-neutral guidance at tsrx.dev over stale architectural summaries.

    line 167
  14. Very specific:

    Treat @tsrx/core and generic tooling as external published dependencies, including in tests and examples.

    line 169
  15. Very specific:

    Avoid copying removed compiler APIs, old package layouts, or legacy .ripple examples into new guidance.

    line 171
  16. Distinctive:

    If exact behavior is unclear, read the owning retained package and its tests.

    line 173
  17. Distinctive:

    Keep documentation updates short and durable.

    line 174

≈ “Common” is an estimate: at least 1 in 5 of the 3,669 Copilot instructions files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
copilot-instructions.md

Ripple Project Guide for AI Agents

Ripple is a TypeScript-first UI framework and monorepo maintained by Dominic Gannaway. This repository owns the Ripple runtime, Ripple-specific compiler target, adapters, scaffolding, and framework integrations. The shared .tsrx language, compiler core, non-Ripple targets, language tooling, editor plugins, and syntax grammars are maintained in tsrx-org/tsrx.

Start From Current Sources

Use the nearest live source rather than historical summaries:

  • website/public/llms.txt for Ripple runtime APIs, target behavior, and Ripple-specific authoring guidance
  • tsrx.dev for target-neutral TSRX syntax, tooling, and the language specification
  • README.md for the Ripple overview, positioning, and quick-start examples
  • packages/*/README.md for package-specific usage and public APIs
  • vitest.config.js for the current Ripple test projects and file globs
  • package.json for workspace-wide scripts such as rules:generate, test, format, format:check, and typecheck

If a guide conflicts with nearby code or package READMEs, trust the nearby code and current package docs.

Repository Boundary

This repository contains only Ripple-owned source:

  • packages/ripple/: runtime, DOM behavior, hydration, SSR, reactivity, types, and server helpers
  • packages/tsrx-ripple/: the Ripple-specific @tsrx/ripple compiler target
  • packages/vite-plugin/ and packages/rollup-plugin/: Ripple bundler integrations
  • packages/adapter/, packages/adapter-node/, packages/adapter-bun/, and packages/adapter-vercel/: deployment and platform adapters
  • packages/cli/, packages/create-ripple/, and templates/: Ripple scaffolding
  • playground/ripple/, benchmarks/, website/, and website-new/: Ripple examples, performance work, and documentation

Shared @tsrx/* packages are registry dependencies. Do not recreate moved compiler, formatter, linter, language-server, grammar, editor-plugin, or non-Ripple target source here. Route changes in those areas to tsrx-org/tsrx; update Ripple only when its target integration must adapt.

The intended dependency direction is Ripple -> published TSRX packages. Do not add a workspace link, Git dependency, or copied source that reverses that boundary. @tsrx/ripple is the deliberate exception in package naming: its source and publishing authority remain in this repository because it implements Ripple runtime semantics.

RuleSync

This repository uses RuleSync as the single source of truth for shared AI agent instructions. Edit .rulesync/rules/ and regenerate derived files instead of patching generated outputs directly.

Generated targets include:

  • AGENTS.md
  • .github/copilot-instructions.md
  • CLAUDE.md
  • GEMINI.md
  • .cursor/rules/project.mdc

After changing RuleSync content, run:

pnpm rules:generate

Current Working Assumptions

  • Default component files are .tsrx. Do not describe the project as primarily using .ripple files unless the local historical context requires it.
  • Prefer the current TSRX component shape: function Component(props) @{ ... } when setup and output share a scope, or function Component(props) { return <div />; } for simple single-root output.
  • TSRX templates use JSX-shaped elements, fragments, text, expression containers, and directive control flow. Do not introduce removed experimental template-boundary or legacy component syntaxes in new examples.
  • When a template scope mixes TypeScript setup with rendered output, setup statements come first and the scope finishes with one output node: a JSX element, JSX fragment, or JSX control-flow expression. Wrap text, expression containers, or multiple siblings in a fragment when they are the output after setup.
  • Use @if, @for, @switch, and @try for template control flow. Plain JavaScript control flow remains ordinary setup code.
  • A <style> block is scoped to its siblings: it styles the elements beside it and everything below them, never the element that contains it. Put the block and its markup side by side in a fragment or element, inside a @{ ... } body or a control-flow branch. Blocks among the same children share one hash; nested children lists with blocks are nested scopes. Assign a block to a variable for a theme (theme.$class, <style apply={theme} />) or class map; raw CSS in a <style> inside a plain return <div /> function is an error.
  • Share context across files by exporting one Context instance from a shared module and importing it in providers and consumers, or passing the same instance as a prop. Call .set() and .get() during component initialization; event handlers can mutate tracked values stored in the context. For shared updates, provide a store object once in a common ancestor and update its reactive properties. A child's .set() overrides the provided value for its subtree; it does not update the value held by ancestors or sibling branches. See website/docs/guide/state-management.md for examples.
  • Use pnpm for all package management and workspace scripts.
  • Follow the conventions of the package you are changing. This repo mixes plain JavaScript, JSDoc-typed JavaScript, and TypeScript depending on package.
  • Match nearby naming, file layout, and test style instead of applying a single convention repo-wide.

Finding The Right Package

  • Ripple compiler lowering, analysis, or target semantics: packages/tsrx-ripple/
  • Ripple runtime behavior, hydration, reactivity, DOM updates, or server output: packages/ripple/
  • Ripple Vite, Rollup, or adapter behavior: the relevant retained package under packages/
  • Ripple project generation: packages/cli/, packages/create-ripple/, and templates/
  • Target-neutral TSRX parsing, diagnostics, formatting, linting, language-server behavior, editor integration, or non-Ripple targets: tsrx-org/tsrx

Validation

Prefer the smallest validation that covers the touched surface.

Common workspace commands:

pnpm rules:generate
pnpm format:check
pnpm test
pnpm test --project ripple-client
pnpm test --project ripple-server
pnpm test --project ripple-hydration
pnpm test --project tsrx-ripple
pnpm typecheck
pnpm changeset:check

Ripple runtime suites use .test.tsrx files for many client, server, and hydration tests. Tooling packages often use .test.js files.

Changesets And Publishing

Add a changeset for user-facing package changes. Skip changesets for docs-only, test-only, and internal tooling updates.

Use patch changesets for ordinary changes. Reserve minor for a breaking change such as removed syntax or a removed public API, and never use major until a release plan explicitly changes that policy. Peer-dependency bumps only patch their dependents (@changesets/cli 3), so a minor on ripple never cascades into a major.

pnpm changeset
pnpm changeset:check

Changesets discovers publishable packages from the pnpm workspace. Keep non-publishable projects marked private: true, and use .changeset/config.json for release grouping and temporary ignores. @tsrx/ripple remains the sole @tsrx-scoped package published from this repository.

Practical Guidance For Agents

  • Prefer Ripple docs in website/public/llms.txt and target-neutral guidance at tsrx.dev over stale architectural summaries.
  • Treat @tsrx/core and generic tooling as external published dependencies, including in tests and examples.
  • Avoid copying removed compiler APIs, old package layouts, or legacy .ripple examples into new guidance.
  • If exact behavior is unclear, read the owning retained package and its tests.
  • Keep documentation updates short and durable. High-level guidance ages better than detailed internal call lists.

Download now (ZIP)

Trending

Less talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 0 mentionsFeb 2026: 0 mentionsMar 2026: 0 mentionsApr 2026: 3 mentionsMay 2026: 4 mentionsJun 2026: 4 mentionsJul 2026: 4 mentionsAug 2026: 6 mentionsSep 2026: 7 mentionsOct 2026: 1 mentionNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the Ripple-TS/ripple repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about Ripple-TS/ripple

The biggest 5 of 30 mentions linking to the repository that our crawl found. Each line is their own headline.

See all 30

Talked about on GitHub and Hacker News (30 times).

On GitHub · 29

24 more on GitHub

On Hacker News · 1

  • Other versions1 project uses a version of this.

    Word for word · 1

    1. trueadm/ripple★ 7.4k100% same

    Edited · 0

    None found.

    Wrote their own version · 0

    None found.

    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.

  • Where files are headingNew Copilot instructions files have more rules about branches and pull requests, and fewer about code style.

    Of the Copilot instructions files we read, the 2,297 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.

  • In this repository3 other files it gives its agents.

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.