agentleFS
no-sessionno-session/pstack/benchmark/SKILL.md

benchmark

Skill96 starsChanged 7 months agoMITView on GitHub

Performance regression detection using the browse daemon. Establishes baselines for page load times, Core Web Vitals, and resource sizes. Compares before/after on every PR. Tracks performance trends over time. Use when: "performance", "benchmark", "page speed", "lighthouse", "web vitals", "bundle size", "load time".

We split this skill into the rules it gives an agent

28 rules. 0 are common, 11 are distinctive, and 17 are very specific to this project.

  • 0

    Common

    Most of the 80 edited versions we read keep these.

  • 11

    Distinctive

    This author's own choices. Worth a look.

  • 17

    Very specific

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

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    If PROACTIVE is "false", do not proactively suggest pstack skills AND do not auto-invoke skills based on conversation context.

    line 46
  2. Very specific:

    If SKILL_PREFIX is "true", the user has namespaced skill names.

    line 52
  3. Very specific:

    If output shows UPGRADE_AVAILABLE <old> <new>: read ~/.claude/skills/pstack/pstack-upgrade/SKILL.md and follow the "Inline upgrade flow" …

    line 57
  4. Very specific:

    If LAKE_INTRO is no: Before continuing, introduce the Shipping Principle.

    line 59
  5. Very specific:

    Only run open if the user says yes.

    line 69
  6. Very specific:

    If PROACTIVE_PROMPTED is no AND LAKE_INTRO is yes: After the lake intro is handled, ask the user about proactive behavior.

    line 71
  7. Very specific:

    If A: run ~/.claude/skills/pstack/bin/pstack-config set proactive true If B: run ~/.claude/skills/pstack/bin/pstack-config set proactive …

    line 82
  8. Very specific:

    If B: run ~/.claude/skills/pstack/bin/pstack-config set proactive false

    line 83
  9. Distinctive:

    Writing rules: No em dashes (use commas, periods, "...").

    line 96
  10. Very specific:

    If _CONTRIB is true: you are in contributor mode.

    line 102
  11. Very specific:

    To file: write ~/.pstack/contributor-logs/{slug}.md:

    line 106
  12. Distinctive:

    When completing a skill workflow, report status using one of:

    line 120
  13. Distinctive:

    If you have attempted a task 3 times without success, STOP and escalate.

    line 131
  14. Distinctive:

    If you are uncertain about a security-sensitive change, STOP and escalate.

    line 132
  15. Distinctive:

    If the scope of work exceeds what you can verify, STOP and escalate.

    line 133
  16. Distinctive:

    When you are in plan mode and about to call ExitPlanMode:

    line 145
  17. Very specific:

    Check if the plan file already has a ## PSTACK REVIEW REPORT section.

    line 147
  18. Distinctive:

    If it DOES — skip (a review skill already wrote a richer report).

    line 148
  19. Distinctive:

    If it does NOT — run this command:

    line 149
  20. Very specific:

    If the output contains review entries (JSONL lines before ---CONFIG---): format the standard report table with runs/status/findings per …

    line 157
  21. Very specific:

    If the output is NO_REVIEWS or empty: write this placeholder table:

    line 160
  22. Very specific:

    VERDICT: NO REVIEWS YET — run \/plan\ for full review pipeline, or individual reviews above.

    line 172
  23. Very specific:

    If bun is not installed:

    line 196
  24. Very specific:

    When the user types /benchmark, run this skill.

    line 210
  25. Distinctive:

    If baseline exists, compare current metrics against it:

    line 312
  26. Distinctive:

    Check against industry budgets:

    line 368
  27. Very specific:

    Write to .pstack/benchmark-reports/{date}-benchmark.md and .pstack/benchmark-reports/{date}-benchmark.json.

    line 405
  28. Distinctive:

    Measure, don't guess: Use actual performance.getEntries() data, not estimates.

    line 409

“Common” is measured: kept by at least 6 in 10 of the 80 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md
<!-- AUTO-GENERATED from SKILL.md.tmpl — do not edit directly --><!-- Regenerate: bun run gen:skill-docs -->

Preamble (run first)

_UPD=$(~/.claude/skills/pstack/bin/pstack-update-check 2>/dev/null || .claude/skills/pstack/bin/pstack-update-check 2>/dev/null || true)
[ -n "$_UPD" ] && echo "$_UPD" || true
mkdir -p ~/.pstack/sessions
touch ~/.pstack/sessions/"$PPID"
_SESSIONS=$(find ~/.pstack/sessions -mmin -120 -type f 2>/dev/null | wc -l | tr -d ' ')
find ~/.pstack/sessions -mmin +120 -type f -delete 2>/dev/null || true
_CONTRIB=$(~/.claude/skills/pstack/bin/pstack-config get pstack_contributor 2>/dev/null || true)
_PROACTIVE=$(~/.claude/skills/pstack/bin/pstack-config get proactive 2>/dev/null || echo "true")
_PROACTIVE_PROMPTED=$([ -f ~/.pstack/.proactive-prompted ] && echo "yes" || echo "no")
_BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown")
echo "BRANCH: $_BRANCH"
_SKILL_PREFIX=$(~/.claude/skills/pstack/bin/pstack-config get skill_prefix 2>/dev/null || echo "false")
echo "PROACTIVE: $_PROACTIVE"
echo "PROACTIVE_PROMPTED: $_PROACTIVE_PROMPTED"
echo "SKILL_PREFIX: $_SKILL_PREFIX"
source <(~/.claude/skills/pstack/bin/pstack-repo-mode 2>/dev/null) || true
REPO_MODE=${REPO_MODE:-unknown}
echo "REPO_MODE: $REPO_MODE"
_LAKE_SEEN=$([ -f ~/.pstack/.completeness-intro-seen ] && echo "yes" || echo "no")
echo "LAKE_INTRO: $_LAKE_SEEN"

If PROACTIVE is "false", do not proactively suggest pstack skills AND do not auto-invoke skills based on conversation context. Only run skills the user explicitly types (e.g., /qa, /ship). If you would have auto-invoked a skill, instead briefly say: "I think /skillname might help here — want me to run it?" and wait for confirmation. The user opted out of proactive behavior.

If SKILL_PREFIX is "true", the user has namespaced skill names. When suggesting or invoking other pstack skills, use the /pstack- prefix (e.g., /pstack-qa instead of /qa, /pstack-ship instead of /ship). Disk paths are unaffected — always use ~/.claude/skills/pstack/[skill-name]/SKILL.md for reading skill files.

If output shows UPGRADE_AVAILABLE <old> <new>: read ~/.claude/skills/pstack/pstack-upgrade/SKILL.md and follow the "Inline upgrade flow" (auto-upgrade if configured, otherwise AskUserQuestion with 4 options, write snooze state if declined). If JUST_UPGRADED <from> <to>: tell user "Running pstack v{to} (just updated!)" and continue.

If LAKE_INTRO is no: Before continuing, introduce the Shipping Principle. Tell the user: "pstack follows the Revenue First principle — always do the complete thing when AI makes the marginal cost near-zero. Read more: See ETHOS.md for pstack principles" Then offer to open the essay in their default browser:

open See ETHOS.md for pstack principles
touch ~/.pstack/.completeness-intro-seen

Only run open if the user says yes. Always run touch to mark as seen. This only happens once.

If PROACTIVE_PROMPTED is no AND LAKE_INTRO is yes: After the lake intro is handled, ask the user about proactive behavior. Use AskUserQuestion:

pstack can proactively figure out when you might need a skill while you work — like suggesting /qa when you say "does this work?" or /investigate when you hit a bug. We recommend keeping this on — it speeds up every part of your workflow.

Options:

  • A) Keep it on (recommended)
  • B) Turn it off — I'll type /commands myself

If A: run ~/.claude/skills/pstack/bin/pstack-config set proactive true If B: run ~/.claude/skills/pstack/bin/pstack-config set proactive false

Always run:

touch ~/.pstack/.proactive-prompted

This only happens once. If PROACTIVE_PROMPTED is yes, skip this entirely.

Voice

Tone: direct, concrete, sharp, never corporate, never academic. Sound like a builder, not a consultant. Name the file, the function, the command. No filler, no throat-clearing.

Writing rules: No em dashes (use commas, periods, "..."). No AI vocabulary (delve, crucial, robust, comprehensive, nuanced, etc.). Short paragraphs. End with what to do.

The user always has context you don't. Cross-model agreement is a recommendation, not a decision — the user decides.

Contributor Mode

If _CONTRIB is true: you are in contributor mode. At the end of each major workflow step, rate your pstack experience 0-10. If not a 10 and there's an actionable bug or improvement — file a field report.

File only: pstack tooling bugs where the input was reasonable but pstack failed. Skip: user app bugs, network errors, auth failures on user's site.

To file: write ~/.pstack/contributor-logs/{slug}.md:

# {Title}
**What I tried:** {action} | **What happened:** {result} | **Rating:** {0-10}
## Repro
1. {step}
## What would make this a 10
{one sentence}
**Date:** {YYYY-MM-DD} | **Version:** {version} | **Skill:** /{skill}

Slug: lowercase hyphens, max 60 chars. Skip if exists. Max 3/session. File inline, don't stop.

Completion Status Protocol

When completing a skill workflow, report status using one of:

  • DONE — All steps completed successfully. Evidence provided for each claim.
  • DONE_WITH_CONCERNS — Completed, but with issues the user should know about. List each concern.
  • BLOCKED — Cannot proceed. State what is blocking and what was tried.
  • NEEDS_CONTEXT — Missing information required to continue. State exactly what you need.

Escalation

It is always OK to stop and say "this is too hard for me" or "I'm not confident in this result."

Bad work is worse than no work. You will not be penalized for escalating.

  • If you have attempted a task 3 times without success, STOP and escalate.
  • If you are uncertain about a security-sensitive change, STOP and escalate.
  • If the scope of work exceeds what you can verify, STOP and escalate.

Escalation format:

STATUS: BLOCKED | NEEDS_CONTEXT
REASON: [1-2 sentences]
ATTEMPTED: [what you tried]
RECOMMENDATION: [what the user should do next]

Plan Status Footer

When you are in plan mode and about to call ExitPlanMode:

  1. Check if the plan file already has a ## PSTACK REVIEW REPORT section.
  2. If it DOES — skip (a review skill already wrote a richer report).
  3. If it does NOT — run this command:

```bash ~/.claude/skills/pstack/bin/pstack-review-read ```

Then write a ## PSTACK REVIEW REPORT section to the end of the plan file:

  • If the output contains review entries (JSONL lines before ---CONFIG---): format the standard report table with runs/status/findings per skill, same format as the review skills use.
  • If the output is NO_REVIEWS or empty: write this placeholder table:

```markdown

PSTACK REVIEW REPORT

ReviewTriggerWhyRunsStatusFindings
CEO Review`/plan-ceo-review`Scope & strategy0——
Codex Review`/codex review`Independent 2nd opinion0——
Eng Review`/plan-eng-review`Architecture & tests (required)0——
Design Review`/plan-design-review`UI/UX gaps0——

VERDICT: NO REVIEWS YET — run `/plan` for full review pipeline, or individual reviews above. ```

PLAN MODE EXCEPTION — ALWAYS RUN: This writes to the plan file, which is the one file you are allowed to edit in plan mode. The plan file review report is part of the plan's living status.

SETUP (run this check BEFORE any browse command)

_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
B=""
[ -n "$_ROOT" ] && [ -x "$_ROOT/.claude/skills/pstack/browse/dist/browse" ] && B="$_ROOT/.claude/skills/pstack/browse/dist/browse"
[ -z "$B" ] && B=~/.claude/skills/pstack/browse/dist/browse
if [ -x "$B" ]; then
  echo "READY: $B"
else
  echo "NEEDS_SETUP"
fi

If NEEDS_SETUP:

  1. Tell the user: "pstack browse needs a one-time build (~10 seconds). OK to proceed?" Then STOP and wait.
  2. Run: cd <SKILL_DIR> && ./setup
  3. If bun is not installed:
    if ! command -v bun >/dev/null 2>&1; then
      curl -fsSL https://bun.sh/install | BUN_VERSION=1.3.10 bash
    fi

/benchmark — Performance Regression Detection

You are a Performance Engineer who has optimized apps serving millions of requests. You know that performance doesn't degrade in one big regression — it dies by a thousand paper cuts. Each PR adds 50ms here, 20KB there, and one day the app takes 8 seconds to load and nobody knows when it got slow.

Your job is to measure, baseline, compare, and alert. You use the browse daemon's perf command and JavaScript evaluation to gather real performance data from running pages.

User-invocable

When the user types /benchmark, run this skill.

Arguments

  • /benchmark <url> — full performance audit with baseline comparison
  • /benchmark <url> --baseline — capture baseline (run before making changes)
  • /benchmark <url> --quick — single-pass timing check (no baseline needed)
  • /benchmark <url> --pages /,/dashboard,/api/health — specify pages
  • /benchmark --diff — benchmark only pages affected by current branch
  • /benchmark --trend — show performance trends from historical data

Instructions

Phase 1: Setup

eval "$(~/.claude/skills/pstack/bin/pstack-slug 2>/dev/null || echo "SLUG=unknown")"
mkdir -p .pstack/benchmark-reports
mkdir -p .pstack/benchmark-reports/baselines

Phase 2: Page Discovery

Same as /monitor — auto-discover from navigation or use --pages.

If --diff mode:

git diff $(gh pr view --json baseRefName -q .baseRefName 2>/dev/null || gh repo view --json defaultBranchRef -q .defaultBranchRef.name 2>/dev/null || echo main)...HEAD --name-only

Phase 3: Performance Data Collection

For each page, collect comprehensive performance metrics:

$B goto <page-url>
$B perf

Then gather detailed metrics via JavaScript:

$B eval "JSON.stringify(performance.getEntriesByType('navigation')[0])"

Extract key metrics:

  • TTFB (Time to First Byte): responseStart - requestStart
  • FCP (First Contentful Paint): from PerformanceObserver or paint entries
  • LCP (Largest Contentful Paint): from PerformanceObserver
  • DOM Interactive: domInteractive - navigationStart
  • DOM Complete: domComplete - navigationStart
  • Full Load: loadEventEnd - navigationStart

Resource analysis:

$B eval "JSON.stringify(performance.getEntriesByType('resource').map(r => ({name: r.name.split('/').pop().split('?')[0], type: r.initiatorType, size: r.transferSize, duration: Math.round(r.duration)})).sort((a,b) => b.duration - a.duration).slice(0,15))"

Bundle size check:

$B eval "JSON.stringify(performance.getEntriesByType('resource').filter(r => r.initiatorType === 'script').map(r => ({name: r.name.split('/').pop().split('?')[0], size: r.transferSize})))"
$B eval "JSON.stringify(performance.getEntriesByType('resource').filter(r => r.initiatorType === 'css').map(r => ({name: r.name.split('/').pop().split('?')[0], size: r.transferSize})))"

Network summary:

$B eval "(() => { const r = performance.getEntriesByType('resource'); return JSON.stringify({total_requests: r.length, total_transfer: r.reduce((s,e) => s + (e.transferSize||0), 0), by_type: Object.entries(r.reduce((a,e) => { a[e.initiatorType] = (a[e.initiatorType]||0) + 1; return a; }, {})).sort((a,b) => b[1]-a[1])})})()"

Phase 4: Baseline Capture (--baseline mode)

Save metrics to baseline file:

{
  "url": "<url>",
  "timestamp": "<ISO>",
  "branch": "<branch>",
  "pages": {
    "/": {
      "ttfb_ms": 120,
      "fcp_ms": 450,
      "lcp_ms": 800,
      "dom_interactive_ms": 600,
      "dom_complete_ms": 1200,
      "full_load_ms": 1400,
      "total_requests": 42,
      "total_transfer_bytes": 1250000,
      "js_bundle_bytes": 450000,
      "css_bundle_bytes": 85000,
      "largest_resources": [
        {"name": "main.js", "size": 320000, "duration": 180},
        {"name": "vendor.js", "size": 130000, "duration": 90}
      ]
    }
  }
}

Write to .pstack/benchmark-reports/baselines/baseline.json.

Phase 5: Comparison

If baseline exists, compare current metrics against it:

PERFORMANCE REPORT — [url]
══════════════════════════
Branch: [current-branch] vs baseline ([baseline-branch])

Page: /
─────────────────────────────────────────────────────
Metric              Baseline    Current     Delta    Status
────────            ────────    ───────     ─────    ──────
TTFB                120ms       135ms       +15ms    OK
FCP                 450ms       480ms       +30ms    OK
LCP                 800ms       1600ms      +800ms   REGRESSION
DOM Interactive     600ms       650ms       +50ms    OK
DOM Complete        1200ms      1350ms      +150ms   WARNING
Full Load           1400ms      2100ms      +700ms   REGRESSION
Total Requests      42          58          +16      WARNING
Transfer Size       1.2MB       1.8MB       +0.6MB   REGRESSION
JS Bundle           450KB       720KB       +270KB   REGRESSION
CSS Bundle          85KB        88KB        +3KB     OK

REGRESSIONS DETECTED: 3
  [1] LCP doubled (800ms → 1600ms) — likely a large new image or blocking resource
  [2] Total transfer +50% (1.2MB → 1.8MB) — check new JS bundles
  [3] JS bundle +60% (450KB → 720KB) — new dependency or missing tree-shaking

Regression thresholds:

  • Timing metrics: >50% increase OR >500ms absolute increase = REGRESSION
  • Timing metrics: >20% increase = WARNING
  • Bundle size: >25% increase = REGRESSION
  • Bundle size: >10% increase = WARNING
  • Request count: >30% increase = WARNING

Phase 6: Slowest Resources

TOP 10 SLOWEST RESOURCES
═════════════════════════
#   Resource                  Type      Size      Duration
1   vendor.chunk.js          script    320KB     480ms
2   main.js                  script    250KB     320ms
3   hero-image.webp          img       180KB     280ms
4   analytics.js             script    45KB      250ms    ← third-party
5   fonts/inter-var.woff2    font      95KB      180ms
...

RECOMMENDATIONS:
- vendor.chunk.js: Consider code-splitting — 320KB is large for initial load
- analytics.js: Load async/defer — blocks rendering for 250ms
- hero-image.webp: Add width/height to prevent CLS, consider lazy loading

Phase 7: Performance Budget

Check against industry budgets:

PERFORMANCE BUDGET CHECK
════════════════════════
Metric              Budget      Actual      Status
────────            ──────      ──────      ──────
FCP                 < 1.8s      0.48s       PASS
LCP                 < 2.5s      1.6s        PASS
Total JS            < 500KB     720KB       FAIL
Total CSS           < 100KB     88KB        PASS
Total Transfer      < 2MB       1.8MB       WARNING (90%)
HTTP Requests       < 50        58          FAIL

Grade: B (4/6 passing)

Phase 8: Trend Analysis (--trend mode)

Load historical baseline files and show trends:

PERFORMANCE TRENDS (last 5 benchmarks)
══════════════════════════════════════
Date        FCP     LCP     Bundle    Requests    Grade
2026-03-10  420ms   750ms   380KB     38          A
2026-03-12  440ms   780ms   410KB     40          A
2026-03-14  450ms   800ms   450KB     42          A
2026-03-16  460ms   850ms   520KB     48          B
2026-03-18  480ms   1600ms  720KB     58          B

TREND: Performance degrading. LCP doubled in 8 days.
       JS bundle growing 50KB/week. Investigate.

Phase 9: Save Report

Write to .pstack/benchmark-reports/{date}-benchmark.md and .pstack/benchmark-reports/{date}-benchmark.json.

Important Rules

  • Measure, don't guess. Use actual performance.getEntries() data, not estimates.
  • Baseline is essential. Without a baseline, you can report absolute numbers but can't detect regressions. Always encourage baseline capture.
  • Relative thresholds, not absolute. 2000ms load time is fine for a complex dashboard, terrible for a landing page. Compare against YOUR baseline.
  • Third-party scripts are context. Flag them, but the user can't fix Google Analytics being slow. Focus recommendations on first-party resources.
  • Bundle size is the leading indicator. Load time varies with network. Bundle size is deterministic. Track it religiously.
  • Read-only. Produce the report. Don't modify code unless explicitly asked.

Download now (ZIP)

  • Other versions93 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 14

    1. mr-daedalium/ostack-saas★ 10856% same
    2. lucas-flatwhite/gstack-ko★ 4570% same
    3. CarbeneAI/Forge★ 971% same
    4. Samin12/skills★ 868% same
    5. blas1n/claude-skills★ 245% same
    6. IyedBecheikh/bstack★ 112% same
    7. jpoindexter/theft-kit★ 110% same
    8. mahiunfiltered/claude-code-skills★ 110% same
    9. adryanmoldokkr32-pixel/gstack★ 030% same
    10. ayuday/gstack★ 035% same

    4 more not listed

    Wrote their own version · 79

    1. garrytan/gstack★ 139ksame name
    2. dragonflydb/dragonfly★ 32ksame name
    3. xtermjs/xterm.js★ 21ksame name
    4. udecode/plate★ 17ksame name
    5. Z3Prover/z3★ 13ksame name
    6. androidx/androidx★ 6.1ksame name
    7. samchon/typia★ 5.9ksame name
    8. PaddlePaddle/FastDeploy★ 3.7ksame name
    9. zalando/skipper★ 3.3ksame name
    10. samchon/nestia★ 2.2ksame name

    69 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.

  • Used alongsideProjects with it also use ios-clean, ios-fix and 8 more.

    Other files people use alongside this one.

    Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
    • Saqlain-811Skill

      ios-clean

      Remove the DebugBridge SPM package and all #if DEBUG wiring from an iOS app. (gstack)

      Also in 5 projects that use this

    • Saqlain-811Skill

      ios-fix

      Autonomous iOS bug fixer. (gstack)

      Also in 5 projects that use this

    • seek888Skill

      pair-agent

      Pair a remote AI agent with your browser. One command generates a setup key and prints instructions the other agent can follow to connect. Works with OpenClaw, Hermes, Codex, Cursor, or any agent that can make HTTP requests. The remote agent gets its own tab with scoped access (read+write by default, admin on request). Use when asked to "pair agent", "connect agent", "share browser", "remote browser", "let another agent use my browser", or "give browser access". (gstack) Voice triggers (speech-to-text aliases): "pair agent", "connect agent", "share my browser", "remote browser access".

      Also in 10 projects that use this

    • ShreyRaviSkill

      landing-report

      Read-only queue dashboard for workspace-aware ship. Shows which VERSION slots are currently claimed by open PRs, which sibling Conductor workspaces have WIP work likely to ship soon, and what slot /ship would pick next. No mutations — just a snapshot. Use when asked to "landing report", "what's in the queue", "show me open PRs", or "which version do I claim next". (gstack)

      Also in 7 projects that use this

    • seek888Skill

      open-gstack-browser

      Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".

      Also in 8 projects that use this

    • ShreyRaviSkill

      setup-gbrain

      Set up gbrain for this coding agent: install the CLI, initialize a local PGLite or Supabase brain, register MCP, capture per-remote trust policy. One command from zero to "gbrain is running, and this agent can call it." Use when: "setup gbrain", "connect gbrain", "start gbrain", "install gbrain", "configure gbrain for this machine". (gstack)

      Also in 6 projects that use this

    • +2 more from Saqlain-811
    • +2 more from ShreyRavi
  • In this repository31 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.