@zigrivers/scaffold 3.33.4 → 3.33.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/content/knowledge/VERSION +1 -1
- package/content/knowledge/browser-extension/browser-extension-architecture.md +16 -4
- package/content/knowledge/browser-extension/browser-extension-content-scripts.md +16 -4
- package/content/knowledge/browser-extension/browser-extension-conventions.md +13 -3
- package/content/knowledge/browser-extension/browser-extension-cross-browser.md +16 -3
- package/content/knowledge/browser-extension/browser-extension-dev-environment.md +16 -3
- package/content/knowledge/browser-extension/browser-extension-manifest.md +17 -4
- package/content/knowledge/browser-extension/browser-extension-project-structure.md +15 -4
- package/content/knowledge/browser-extension/browser-extension-requirements.md +16 -4
- package/content/knowledge/browser-extension/browser-extension-security.md +19 -4
- package/content/knowledge/browser-extension/browser-extension-service-workers.md +17 -4
- package/content/knowledge/browser-extension/browser-extension-store-submission.md +16 -3
- package/content/knowledge/browser-extension/browser-extension-testing.md +17 -3
- package/content/knowledge/cli/cli-dev-environment.md +14 -3
- package/content/knowledge/cli/cli-distribution-patterns.md +16 -3
- package/content/knowledge/core/adr-craft.md +11 -2
- package/content/knowledge/core/ai-memory-management.md +176 -3
- package/content/knowledge/core/api-design.md +15 -3
- package/content/knowledge/core/automated-review-tooling.md +19 -3
- package/content/knowledge/core/claude-md-patterns.md +14 -3
- package/content/knowledge/core/coding-conventions.md +12 -2
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.12
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-architecture
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Component isolation across content scripts, background service workers, and popup pages; message passing patterns; and
|
|
5
|
+
state synchronization strategies
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- architecture
|
|
9
|
+
- message-passing
|
|
10
|
+
- state-synchronization
|
|
11
|
+
- service-worker
|
|
12
|
+
- content-scripts
|
|
5
13
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
14
|
+
last-reviewed: 2026-06-05
|
|
15
|
+
version-pin: Manifest V3
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://developer.chrome.com/docs/extensions/mv3/architecture-overview
|
|
18
|
+
hash: sha256:138a4d2e5659d81c90bdf5914adef0d119793f3e665aeea5183863b06f469d12
|
|
19
|
+
retrieved: 2026-06-05
|
|
10
20
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
|
|
21
|
+
hash: sha256:25478eeaaec350aa31f533f52c1c34042cd13a133bd5add6d23f567265ce862b
|
|
22
|
+
retrieved: 2026-06-05
|
|
11
23
|
---
|
|
12
24
|
|
|
13
25
|
Browser extension architecture is fundamentally different from web app architecture because the application is split across multiple isolated execution environments that cannot share memory directly. Content scripts run inside host pages but in an isolated JavaScript world. Service workers run in a separate context that is terminated and re-created between events. Popup pages are ephemeral — they exist only while the popup is open. These constraints drive every architectural decision: communication is via message passing, state must be externalized to `chrome.storage`, and every component must tolerate being initialized from scratch at any time.
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-content-scripts
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
DOM manipulation from content scripts, isolated worlds, CSS injection, and communicating with the host page via
|
|
5
|
+
postMessage
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- content-scripts
|
|
9
|
+
- dom-manipulation
|
|
10
|
+
- isolated-worlds
|
|
11
|
+
- css-injection
|
|
12
|
+
- postmessage
|
|
5
13
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
14
|
+
last-reviewed: 2026-06-05
|
|
15
|
+
version-pin: Manifest V3
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://developer.chrome.com/docs/extensions/develop/concepts/content-scripts
|
|
18
|
+
hash: sha256:21d93ef79a4d62b9593ff5f7c28e095031baace9884dbc1128b18ea26194cec2
|
|
19
|
+
retrieved: 2026-06-05
|
|
10
20
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts
|
|
21
|
+
hash: sha256:6089f52945b1b44a6c9361351c91f0304634dc429bb822fa83c4e7ff109a37c2
|
|
22
|
+
retrieved: 2026-06-05
|
|
11
23
|
---
|
|
12
24
|
|
|
13
25
|
Content scripts are the extension's interface with the web page. They run inside the page's DOM but in an isolated JavaScript world — they see the same HTML and can manipulate the same elements, but they cannot access the page's JavaScript variables or prototype chain without explicitly crossing the world boundary. Understanding this isolation is essential for writing content scripts that are both functional and secure.
|
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-conventions
|
|
3
3
|
description: Naming conventions for manifests, message action types, file organization, and i18n structure in browser extensions
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- browser-extension
|
|
6
|
+
- conventions
|
|
7
|
+
- naming
|
|
8
|
+
- i18n
|
|
9
|
+
- file-organization
|
|
10
|
+
- messaging
|
|
5
11
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
12
|
+
last-reviewed: 2026-06-05
|
|
13
|
+
version-pin: Manifest V3
|
|
8
14
|
sources:
|
|
9
15
|
- url: https://developer.chrome.com/docs/extensions/reference/manifest
|
|
16
|
+
hash: sha256:873da4e4724c4352c91929415bcb9e7b98b79f7773e26bf4387ad0137ae69753
|
|
17
|
+
retrieved: 2026-06-05
|
|
10
18
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization
|
|
19
|
+
hash: sha256:55fd96d3c9e92a0d13221f3485b9c7b82192a2fb95fa96586bfd2c091240ba04
|
|
20
|
+
retrieved: 2026-06-05
|
|
11
21
|
---
|
|
12
22
|
|
|
13
23
|
Browser extensions accumulate technical debt faster than typical web apps because they span multiple execution contexts — content scripts, service workers, popup pages, options pages — each with distinct constraints. Consistent naming conventions and file organization make cross-context code navigable and reduce the cognitive overhead of working across these boundaries. Establish conventions before writing code.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-cross-browser
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Using webextension-polyfill for API compatibility, manifest differences between Chrome and Firefox, browser-specific
|
|
5
|
+
APIs, and managing a multi-browser build matrix
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- cross-browser
|
|
9
|
+
- firefox
|
|
10
|
+
- chrome
|
|
11
|
+
- webextension-polyfill
|
|
12
|
+
- compatibility
|
|
13
|
+
- build-matrix
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-05
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs
|
|
19
|
+
hash: sha256:4b0a8d2d7f7db598b7c1b745e49b32e5408a7ca6a58a99450aea1e3bd01fde60
|
|
20
|
+
retrieved: 2026-06-05
|
|
10
21
|
- url: https://developer.chrome.com/docs/extensions/develop/migrate
|
|
22
|
+
hash: sha256:63ca45e8137178af34a42b750639120fe28502a27a59c476cfc77fb778f14b14
|
|
23
|
+
retrieved: 2026-06-05
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
Browser extensions that target both Chrome and Firefox share most of their codebase, but the differences between the two platforms are significant enough to require explicit management. API namespaces differ, manifest syntax diverges in subtle ways, and some APIs exist only in Chrome or only in Firefox. A systematic cross-browser strategy prevents the "works in Chrome, broken in Firefox" class of bugs.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-dev-environment
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Build tooling with Webpack/Vite, hot reload via web-ext and crx-hotreload, and browser launch configuration for
|
|
5
|
+
extension development
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- dev-environment
|
|
9
|
+
- vite
|
|
10
|
+
- webpack
|
|
11
|
+
- hot-reload
|
|
12
|
+
- web-ext
|
|
13
|
+
- build
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-05
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.chrome.com/docs/extensions/get-started/tutorial/hello-world
|
|
19
|
+
hash: sha256:dc673d9b594c057cf68896851b5c211552f4b7f3876c22a568c95348b0155075
|
|
20
|
+
retrieved: 2026-06-05
|
|
10
21
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
|
|
22
|
+
hash: sha256:0f4e414a029b2c3f6e6c1ba5709dd88822fc61cddde1ac58af60f3dffad8d53d
|
|
23
|
+
retrieved: 2026-06-05
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
Browser extension development requires a different local setup than web app development. There is no dev server to navigate to — the extension must be loaded into a real browser instance, and changes require either a manual reload or a dedicated hot-reload tool. Getting this setup right at the start of the project eliminates the most friction-heavy part of the development loop.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-manifest
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Manifest V3 schema, permissions declarations, host_permissions, content_scripts configuration, and background
|
|
5
|
+
service_worker setup
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- manifest
|
|
9
|
+
- manifest-v3
|
|
10
|
+
- permissions
|
|
11
|
+
- content-scripts
|
|
12
|
+
- service-worker
|
|
13
|
+
- host-permissions
|
|
5
14
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
15
|
+
last-reviewed: 2026-06-05
|
|
16
|
+
version-pin: Manifest V3
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.chrome.com/docs/extensions/reference/manifest
|
|
19
|
+
hash: sha256:0bbe598d0affd4b9431dabcde7a0410f81e95b38092d6b258bf796135c438ab6
|
|
20
|
+
retrieved: 2026-06-05
|
|
10
21
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json
|
|
22
|
+
hash: sha256:cea8bb2558b2918998720b80649d5e9551491afec633fede6d338f913b55a5bc
|
|
23
|
+
retrieved: 2026-06-05
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
The `manifest.json` is the contract between your extension and the browser. Every capability your extension uses must be declared here before it can be used. Manifest V3 (MV3) is the current standard, having replaced Manifest V2 (MV2) in Chrome. Understanding the MV3 schema in depth prevents runtime errors, store rejections, and security review failures.
|
|
@@ -1,13 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-project-structure
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Directory layout for browser extensions covering src/popup, src/content, src/background, src/options, public/icons,
|
|
5
|
+
and _locales
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- project-structure
|
|
9
|
+
- file-organization
|
|
10
|
+
- build
|
|
11
|
+
- icons
|
|
5
12
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
13
|
+
last-reviewed: 2026-06-05
|
|
14
|
+
version-pin: Manifest V3
|
|
8
15
|
sources:
|
|
9
16
|
- url: https://developer.chrome.com/docs/extensions/develop
|
|
17
|
+
hash: sha256:fc24f69c0d484d9806c95229ddf1c29a1fd9a03cc81ccc9f837548725171a5ef
|
|
18
|
+
retrieved: 2026-06-05
|
|
10
19
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
|
|
20
|
+
hash: sha256:25478eeaaec350aa31f533f52c1c34042cd13a133bd5add6d23f567265ce862b
|
|
21
|
+
retrieved: 2026-06-05
|
|
11
22
|
---
|
|
12
23
|
|
|
13
24
|
Browser extension project structure must account for multiple compilation targets (one bundle per execution context), static assets that bypass the build pipeline, and locale files consumed by the WebExtensions runtime. A well-organized project structure makes build configuration straightforward, keeps context-specific code isolated, and prevents accidentally importing browser APIs that are unavailable in a given context.
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-requirements
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
User permissions model, store policies (Chrome Web Store, AMO), accessibility requirements, and performance budgets
|
|
5
|
+
for browser extensions
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- requirements
|
|
9
|
+
- permissions
|
|
10
|
+
- store-policies
|
|
11
|
+
- accessibility
|
|
12
|
+
- performance
|
|
5
13
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
14
|
+
last-reviewed: 2026-06-05
|
|
15
|
+
version-pin: Manifest V3
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://developer.chrome.com/docs/webstore/program-policies
|
|
18
|
+
hash: sha256:b920f88cdb7ee59c5e91d45357680c06a781db04bdfc72aa242e3dde71862838
|
|
19
|
+
retrieved: 2026-06-05
|
|
10
20
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/AMO/Policy
|
|
21
|
+
hash: sha256:9791bbdf9ed9ecd0f0b6b8478bda286ab4fce4c7544a0100186b5fa28988daa1
|
|
22
|
+
retrieved: 2026-06-05
|
|
11
23
|
---
|
|
12
24
|
|
|
13
25
|
Browser extension requirements differ fundamentally from web app requirements because the extension operates inside a user's browser with elevated trust and broad access to browsing data. Every permission requested must be justified, every store policy must be understood before writing code, and performance budgets must be set early because extensions run on every page a user visits — regressions directly degrade the entire browsing experience.
|
|
@@ -1,14 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-security
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Content Security Policy for extensions, prohibitions on eval and inline scripts, host permissions principle of least
|
|
5
|
+
privilege, and XSS prevention in extension UIs
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- security
|
|
9
|
+
- csp
|
|
10
|
+
- xss
|
|
11
|
+
- permissions
|
|
12
|
+
- least-privilege
|
|
13
|
+
- eval
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
15
|
+
last-reviewed: 2026-06-05
|
|
16
|
+
version-pin: Manifest V3
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.chrome.com/docs/extensions/reference/manifest/content-security-policy
|
|
19
|
+
hash: sha256:e4c7c42933e4e917edd5cf2b5aa3e3d6a13f07ebdfad927d4bda567f6c8c175f
|
|
20
|
+
retrieved: 2026-06-05
|
|
10
21
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy
|
|
22
|
+
hash: sha256:d06e2e28a6173edd2dfd58b02f2d5c5e0665a76da98dea2b4f9a8f07c2ecfb4d
|
|
23
|
+
retrieved: 2026-06-05
|
|
11
24
|
- url: https://owasp.org/www-community/attacks/xss/
|
|
25
|
+
hash: sha256:e2d634a57647ee73a8aced85e0950560020e44324931468de07e36d1bba49c1d
|
|
26
|
+
retrieved: 2026-06-05
|
|
12
27
|
---
|
|
13
28
|
|
|
14
29
|
Browser extensions run with elevated browser privileges compared to ordinary web pages. A compromised extension can read browsing history, intercept network requests, steal cookies, and inject content into any page it has permission to access. Security is not optional — it is a first-class requirement enforced by the browser, the store review process, and the trust of every user who installs the extension.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-service-workers
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Extension service worker lifecycle (install/activate), event-driven programming model, alarms API for recurring tasks,
|
|
5
|
+
and persistent state via chrome.storage
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- service-worker
|
|
9
|
+
- lifecycle
|
|
10
|
+
- alarms
|
|
11
|
+
- chrome-storage
|
|
12
|
+
- event-driven
|
|
13
|
+
- background
|
|
5
14
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
15
|
+
last-reviewed: 2026-06-05
|
|
16
|
+
version-pin: Manifest V3
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.chrome.com/docs/extensions/develop/concepts/service-workers
|
|
19
|
+
hash: sha256:088fdeebf41909724c31ae64f779d25853ce91dab3d30d48fe6876beb697984a
|
|
20
|
+
retrieved: 2026-06-05
|
|
10
21
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Background_scripts
|
|
22
|
+
hash: sha256:74c09f9ce0e40ed769c4c1128493ee5749df7b9d5359b7a815c6dfbd18069aff
|
|
23
|
+
retrieved: 2026-06-05
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
The Manifest V3 background service worker is the most architecturally disruptive change from MV2. The persistent background page that could hold state indefinitely is gone. Service workers are event-driven and ephemeral — Chrome terminates them when idle and restarts them when events arrive. Every design decision for background logic must account for this constraint.
|
|
@@ -1,13 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-store-submission
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Chrome Web Store review process, AMO submission, screenshot and promotional image requirements, listing optimization,
|
|
5
|
+
and managing version updates
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- store-submission
|
|
9
|
+
- chrome-web-store
|
|
10
|
+
- amo
|
|
11
|
+
- listing-optimization
|
|
12
|
+
- review-process
|
|
13
|
+
- screenshots
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-07
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://developer.chrome.com/docs/webstore/publish
|
|
19
|
+
hash: sha256:c81bca9d736a2ad631c41f1c4f484b6341afcbd5cd5e5ea6d1dbccf909c04511
|
|
20
|
+
retrieved: 2026-06-07
|
|
10
21
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/Distribution
|
|
22
|
+
hash: sha256:36cf6edeaf11509b684bdf7b21d78cb5fe0330697a34acff91903d70d33430e7
|
|
23
|
+
retrieved: 2026-06-07
|
|
11
24
|
---
|
|
12
25
|
|
|
13
26
|
Store submission is the deployment step for browser extensions. Unlike web applications where you push to a server, extensions must pass store review before reaching users. Review timelines, policy requirements, and listing quality directly affect user acquisition and approval success. Understanding the process before writing the first line of code prevents costly late-stage pivots.
|
|
@@ -1,13 +1,27 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-extension-testing
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Extension testing with Puppeteer and Playwright, unit testing shared logic, and manual cross-browser smoke test
|
|
5
|
+
procedures
|
|
6
|
+
topics:
|
|
7
|
+
- browser-extension
|
|
8
|
+
- testing
|
|
9
|
+
- puppeteer
|
|
10
|
+
- playwright
|
|
11
|
+
- unit-testing
|
|
12
|
+
- e2e
|
|
13
|
+
- smoke-tests
|
|
14
|
+
- cross-browser
|
|
5
15
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
16
|
+
last-reviewed: 2026-06-07
|
|
7
17
|
version-pin: null
|
|
8
18
|
sources:
|
|
9
19
|
- url: https://developer.chrome.com/docs/extensions/how-to/test/end-to-end-testing
|
|
20
|
+
hash: sha256:66bf76a65993daa9fcb0daba148e6780cd54d34a0fd013c24634ed86f4115e4f
|
|
21
|
+
retrieved: 2026-06-07
|
|
10
22
|
- url: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Testing_persistent_and_restart_features
|
|
23
|
+
hash: sha256:ca07150330ba40d75080deedf3928e78776615c6fdab4ad83de7999c17890ee8
|
|
24
|
+
retrieved: 2026-06-07
|
|
11
25
|
---
|
|
12
26
|
|
|
13
27
|
Browser extension testing is harder than web app testing because the extension runs in a privileged browser context that most test frameworks cannot easily access. The strategy is to maximize the code that lives in plain TypeScript (easily unit-tested), minimize the code that requires a real browser to test (expensive), and write targeted end-to-end tests that exercise the extension in a real browser for the scenarios that matter most.
|
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cli-dev-environment
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Local development setup for CLIs including npm link, cargo install, debug flags, manual testing workflow, and hot
|
|
5
|
+
reload
|
|
6
|
+
topics:
|
|
7
|
+
- cli
|
|
8
|
+
- dev-environment
|
|
9
|
+
- npm-link
|
|
10
|
+
- cargo
|
|
11
|
+
- debug
|
|
12
|
+
- hot-reload
|
|
13
|
+
- testing-workflow
|
|
5
14
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
15
|
+
last-reviewed: 2026-06-07
|
|
7
16
|
version-pin: null
|
|
8
17
|
sources:
|
|
9
18
|
- url: https://docs.astral.sh/uv/
|
|
19
|
+
hash: sha256:81d5796b079a3cd0448a2a99ffd23bcd684922c52c36f8c8ecf212804da271e2
|
|
20
|
+
retrieved: 2026-06-07
|
|
10
21
|
---
|
|
11
22
|
|
|
12
23
|
CLI development has a tighter feedback loop requirement than library development: you need to run the actual binary, observe its output, and verify behavior against real filesystem and network state. Setting up a fast local development workflow is not optional — a slow iteration cycle compounds across hundreds of test invocations.
|
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: cli-distribution-patterns
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
npm, pip, and cargo publishing, Homebrew formulae, standalone binaries, Docker images, and GitHub Releases with
|
|
5
|
+
checksums
|
|
6
|
+
topics:
|
|
7
|
+
- cli
|
|
8
|
+
- distribution
|
|
9
|
+
- npm
|
|
10
|
+
- homebrew
|
|
11
|
+
- cargo
|
|
12
|
+
- pip
|
|
13
|
+
- standalone-binaries
|
|
14
|
+
- github-releases
|
|
15
|
+
- checksums
|
|
5
16
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
17
|
+
last-reviewed: 2026-06-07
|
|
7
18
|
version-pin: null
|
|
8
19
|
sources:
|
|
9
20
|
- url: https://peps.python.org/pep-0621/
|
|
21
|
+
hash: sha256:7a37a1354520a9a9f31ff547e6318d8f06fbf3c02c435caf41d3cb9306989995
|
|
22
|
+
retrieved: 2026-06-07
|
|
10
23
|
---
|
|
11
24
|
|
|
12
25
|
Distribution is where many CLI projects fail: the tool works perfectly in development but is painful to install, update, or run in different environments. A well-distributed CLI reaches users through multiple channels (package manager, direct download, container) and handles updates gracefully.
|
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: adr-craft
|
|
3
3
|
description: Writing effective architecture decision records including technology selection
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- adr
|
|
6
|
+
- architecture-decisions
|
|
7
|
+
- tech-stack
|
|
8
|
+
- decision-documentation
|
|
9
|
+
- technology-selection
|
|
5
10
|
volatility: stable
|
|
6
|
-
last-reviewed:
|
|
11
|
+
last-reviewed: 2026-06-07
|
|
7
12
|
version-pin: null
|
|
8
13
|
sources:
|
|
9
14
|
- url: https://adr.github.io/
|
|
10
15
|
anchor: '#decision-record-templates'
|
|
16
|
+
hash: sha256:56c48fcbfa504a3b058d57058dd6dfbab83fc879bc405317d847ec5a2efbd2b6
|
|
17
|
+
retrieved: 2026-06-07
|
|
11
18
|
- url: https://github.com/joelparkerhenderson/architecture-decision-record
|
|
12
19
|
anchor: '#adr-templates'
|
|
20
|
+
hash: sha256:0155a98859571e056061d2205db0bf1a7088ee91d6681d85a98f7401d0a6a962
|
|
21
|
+
retrieved: 2026-06-07
|
|
13
22
|
---
|
|
14
23
|
|
|
15
24
|
## Summary
|
|
@@ -1,13 +1,29 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ai-memory-management
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
AI memory and context management patterns for Claude Code projects including modular rules, MCP memory servers,
|
|
5
|
+
lifecycle hooks, decision logging, and external context integration
|
|
6
|
+
topics:
|
|
7
|
+
- ai-memory
|
|
8
|
+
- claude-code
|
|
9
|
+
- claude-rules
|
|
10
|
+
- mcp-servers
|
|
11
|
+
- lifecycle-hooks
|
|
12
|
+
- context-management
|
|
13
|
+
- session-handoff
|
|
14
|
+
- decision-logging
|
|
15
|
+
- mcp-knowledge-graph
|
|
16
|
+
- context7
|
|
5
17
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
18
|
+
last-reviewed: 2026-06-07
|
|
7
19
|
version-pin: null
|
|
8
20
|
sources:
|
|
9
21
|
- url: https://modelcontextprotocol.io/specification
|
|
22
|
+
hash: sha256:ebe289f5f9ad3d8fd9eb09105a74bff6f5efdfc4cd383759f6f82cf57f3ba724
|
|
23
|
+
retrieved: 2026-06-07
|
|
10
24
|
- url: https://docs.anthropic.com/en/docs/build-with-claude/memory
|
|
25
|
+
hash: sha256:e246d2cd069bcb9c7b78d437ffc1672ce45d6ae2393571c00d436e9f7e494f0f
|
|
26
|
+
retrieved: 2026-06-07
|
|
11
27
|
---
|
|
12
28
|
|
|
13
29
|
# AI Memory Management
|
|
@@ -111,6 +127,163 @@ This replaces inline convention blocks, keeping CLAUDE.md under 200 lines (the e
|
|
|
111
127
|
|
|
112
128
|
#### MCP Memory Servers
|
|
113
129
|
|
|
130
|
+
The Model Context Protocol (MCP) specification (https://modelcontextprotocol.io/specification) defines the protocol for servers that provide context and capabilities to LLM applications. The specification covers server features including Resources, Prompts, and Tools, but does not prescribe specific MCP server implementations.
|
|
131
|
+
|
|
132
|
+
**Configuration pattern** (`.claude/settings.json`):
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"mcpServers": {
|
|
136
|
+
"memory": {
|
|
137
|
+
"command": "npx",
|
|
138
|
+
"args": ["-y", "@modelcontextprotocol/server-memory"],
|
|
139
|
+
"env": {
|
|
140
|
+
"MEMORY_FILE_PATH": ".claude/memory-graph.json"
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### Lifecycle Hooks
|
|
148
|
+
|
|
149
|
+
Hooks automate memory capture at key session events:
|
|
150
|
+
|
|
151
|
+
**PreCompact** (highest value) — Triggers before context compression. Logs when compaction occurs for debugging context loss.
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"hooks": {
|
|
156
|
+
"PreCompact": [{
|
|
157
|
+
"type": "command",
|
|
158
|
+
"command": "echo \"$(date '+%Y-%m-%d %H:%M:%S') — Context compacting\" >> .claude/compaction-log.txt",
|
|
159
|
+
"timeout": 5000
|
|
160
|
+
}]
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
File-logging for compaction events:
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"hooks": {
|
|
169
|
+
"PreCompact": [{
|
|
170
|
+
"type": "command",
|
|
171
|
+
"command": "date '+%Y-%m-%d %H:%M' >> .claude/compaction-log.txt && echo 'Context compacted' >> .claude/compaction-log.txt",
|
|
172
|
+
"timeout": 5000
|
|
173
|
+
}]
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**Stop** — Triggers when a session ends. Good for capturing session-level summaries.
|
|
179
|
+
|
|
180
|
+
**PreToolUse** — Triggers before tool calls. Can log decisions about file modifications. Use sparingly — high frequency means high overhead.
|
|
181
|
+
|
|
182
|
+
**Hook selection guidance:**
|
|
183
|
+
- Start with PreCompact only — it captures the most value with least noise
|
|
184
|
+
- Hook commands must produce a side effect (write to MCP server, append to file) — echoing to `/dev/null` provides zero value
|
|
185
|
+
- Add Stop if sessions frequently end with unrecorded decisions
|
|
186
|
+
- Avoid PreToolUse unless you have a specific logging need — it fires constantly
|
|
187
|
+
|
|
188
|
+
#### Decision Logging
|
|
189
|
+
|
|
190
|
+
Decisions are the highest-value memory type because they cannot be derived from code. A decision log captures what was chosen, what was rejected, and why.
|
|
191
|
+
|
|
192
|
+
**Structure:**
|
|
193
|
+
```
|
|
194
|
+
docs/decisions/
|
|
195
|
+
DECISIONS.md # Index of all decisions
|
|
196
|
+
001-auth-strategy.md # Individual decision records
|
|
197
|
+
002-database-choice.md
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Decision entry format:**
|
|
201
|
+
```markdown
|
|
202
|
+
## DEC-001: JWT over session cookies for auth
|
|
203
|
+
|
|
204
|
+
**Date:** 2026-03-27
|
|
205
|
+
**Context:** Need stateless auth for API-first architecture
|
|
206
|
+
**Decision:** Use JWT with short-lived access tokens + refresh tokens
|
|
207
|
+
**Rejected:** Session cookies (requires sticky sessions), OAuth-only (too complex for MVP)
|
|
208
|
+
**Consequences:** Need token refresh logic in frontend, need secure token storage
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
This complements ADRs (which cover architecture-level decisions) by capturing day-to-day implementation decisions that would otherwise be lost between sessions.
|
|
212
|
+
|
|
213
|
+
#### Session Handoff Patterns
|
|
214
|
+
|
|
215
|
+
When context hits limits, structured handoff preserves continuity:
|
|
216
|
+
|
|
217
|
+
1. **Before compaction**: Save current task state, open questions, and recent decisions
|
|
218
|
+
2. **After compaction**: Claude Code auto-reloads CLAUDE.md and auto-memory, but loses working context
|
|
219
|
+
3. **Recovery**: Agent reads decision log and memory server to reconstruct working state
|
|
220
|
+
|
|
221
|
+
The `/compact` command is the natural handoff point. A PreCompact hook that saves session state ensures nothing critical is lost.
|
|
222
|
+
|
|
223
|
+
### Tier 3: External Context
|
|
224
|
+
|
|
225
|
+
#### Library Documentation Servers
|
|
226
|
+
|
|
227
|
+
AI agents hallucinate APIs — they generate plausible but incorrect function signatures, especially for rapidly-evolving libraries. External doc servers solve this by providing current, version-specific documentation on demand.
|
|
228
|
+
|
|
229
|
+
**Context7** (by Upstash) — Most popular, fetches current library docs via MCP
|
|
230
|
+
- Covers major frameworks (React, Next.js, Vue, Angular, etc.)
|
|
231
|
+
- Free tier: 1,000 requests/month
|
|
232
|
+
- Caution: had a security vulnerability (patched) — review before enabling
|
|
233
|
+
|
|
234
|
+
**Nia** (by Nozomio) — Indexes codebases + 3,000+ pre-indexed packages
|
|
235
|
+
- Cross-session context persistence
|
|
236
|
+
- Deep research agent for complex questions
|
|
237
|
+
- Y Combinator backed, more comprehensive than Context7
|
|
238
|
+
|
|
239
|
+
**Docfork** — 9,000+ libraries, MIT license
|
|
240
|
+
- "Cabinets" for project-specific documentation isolation
|
|
241
|
+
- Self-hostable
|
|
242
|
+
|
|
243
|
+
**Configuration pattern:**
|
|
244
|
+
```json
|
|
245
|
+
{
|
|
246
|
+
"mcpServers": {
|
|
247
|
+
"context7": {
|
|
248
|
+
"command": "npx",
|
|
249
|
+
"args": ["-y", "@upstash/context7-mcp@latest"]
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**When to enable:** Projects with 3+ external dependencies, especially rapidly-evolving frameworks (React, Next.js, Svelte). Skip for standard library-only projects or well-established stable APIs.
|
|
256
|
+
|
|
257
|
+
### Anti-Patterns
|
|
258
|
+
|
|
259
|
+
| Anti-Pattern | Why It Fails | Instead |
|
|
260
|
+
|-------------|-------------|---------|
|
|
261
|
+
| Dumping entire codebase into context | Drowns signal in noise, costs tokens | Let the agent read files on demand |
|
|
262
|
+
| Storing code patterns in memory | Duplicates what's in the code; goes stale | Store decisions and rationale only |
|
|
263
|
+
| Huge CLAUDE.md (500+ lines) | Adherence drops sharply above 200 lines | Use .claude/rules/ for specifics |
|
|
264
|
+
| Memory without structure | Unstructured notes become unsearchable noise | Use categories (decision, lesson, error) |
|
|
265
|
+
| Capturing everything | Token cost with diminishing returns | Capture what can't be derived from code |
|
|
266
|
+
| Multiple overlapping memory tools | Conflicting context, duplicated entries | Pick one MCP server, use it consistently |
|
|
267
|
+
|
|
268
|
+
### Integration with Beads
|
|
269
|
+
|
|
270
|
+
When Beads is configured, memory complements task tracking:
|
|
271
|
+
- **Beads** tracks what work to do (tasks, dependencies, status)
|
|
272
|
+
- **Memory** tracks how to do work better (patterns, decisions, lessons)
|
|
273
|
+
- Decision log entries can reference Beads task IDs for traceability
|
|
274
|
+
- `tasks/lessons.md` remains the cross-session learning file; MCP memory adds structured queryability
|
|
275
|
+
- Don't duplicate: if a pattern is in `tasks/lessons.md`, don't also store it in the MCP server
|
|
276
|
+
|
|
277
|
+
## Coding Conventions
|
|
278
|
+
See `docs/coding-standards.md` for full reference. Key rules in `.claude/rules/code-style.md`.
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
This replaces inline convention blocks, keeping CLAUDE.md under 200 lines (the empirically-validated adherence threshold).
|
|
282
|
+
|
|
283
|
+
### Tier 2: Persistent Memory
|
|
284
|
+
|
|
285
|
+
#### MCP Memory Servers
|
|
286
|
+
|
|
114
287
|
**Recommended: MCP Knowledge Graph** (`@modelcontextprotocol/server-memory`)
|
|
115
288
|
- Official MCP server from the Model Context Protocol project
|
|
116
289
|
- Stores entities, relations, and observations in a local JSON file
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: api-design
|
|
3
3
|
description: API design principles for REST, GraphQL, and inter-service communication
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- api
|
|
6
|
+
- rest
|
|
7
|
+
- graphql
|
|
8
|
+
- endpoints
|
|
9
|
+
- contracts
|
|
10
|
+
- versioning
|
|
11
|
+
- error-handling
|
|
12
|
+
- authentication
|
|
5
13
|
volatility: evolving
|
|
6
|
-
last-reviewed:
|
|
7
|
-
version-pin:
|
|
14
|
+
last-reviewed: 2026-06-07
|
|
15
|
+
version-pin: OpenAPI 3.1 / GraphQL October 2021
|
|
8
16
|
sources:
|
|
9
17
|
- url: https://spec.openapis.org/oas/v3.1.0
|
|
18
|
+
hash: sha256:ca07378639431519731065e397fa4170c2ddfe501a4aa69db60d6a3a9bb669fe
|
|
19
|
+
retrieved: 2026-06-07
|
|
10
20
|
- url: https://spec.graphql.org/October2021/
|
|
21
|
+
hash: sha256:4f556e7bc74ffcdf6ba3c6a4d1f541bd736492db47e97349200a8dfcb80e0ad1
|
|
22
|
+
retrieved: 2026-06-07
|
|
11
23
|
---
|
|
12
24
|
|
|
13
25
|
## Summary
|
|
@@ -1,15 +1,31 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: automated-review-tooling
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Patterns for automated code review using AI CLI tools (Codex, Gemini, Claude) — three-CLI MMR orchestration plus
|
|
5
|
+
Superpowers 4th channel in wrappers, reconciliation, compensating passes, PR + non-PR targets, and CI integration
|
|
6
|
+
topics:
|
|
7
|
+
- code-review
|
|
8
|
+
- automation
|
|
9
|
+
- codex
|
|
10
|
+
- gemini
|
|
11
|
+
- claude
|
|
12
|
+
- pull-requests
|
|
13
|
+
- non-pr-review
|
|
14
|
+
- mmr
|
|
15
|
+
- ci-cd
|
|
16
|
+
- review-tooling
|
|
5
17
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
18
|
+
last-reviewed: 2026-06-07
|
|
7
19
|
version-pin: null
|
|
8
20
|
sources:
|
|
9
21
|
- url: https://docs.anthropic.com/en/docs/claude-code/overview
|
|
10
22
|
anchor: '#claude-code-cli'
|
|
23
|
+
hash: sha256:0436534c3261c036f500f0497ade28c8063f46533e780cd7d4d76821e79d062c
|
|
24
|
+
retrieved: 2026-06-07
|
|
11
25
|
- url: https://ai.google.dev/gemini-api/docs
|
|
12
26
|
anchor: '#cli-tools'
|
|
27
|
+
hash: sha256:7b940f480b27022e4cd3394c125a0173e3d9c79b4e650ab5bea51355049592cc
|
|
28
|
+
retrieved: 2026-06-07
|
|
13
29
|
---
|
|
14
30
|
|
|
15
31
|
# Automated Review Tooling
|
|
@@ -1,15 +1,26 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: claude-md-patterns
|
|
3
|
-
description:
|
|
4
|
-
|
|
3
|
+
description: >-
|
|
4
|
+
Patterns for structuring CLAUDE.md files including section organization, rule authoring, pointer patterns, and merge
|
|
5
|
+
strategies
|
|
6
|
+
topics:
|
|
7
|
+
- claude-md
|
|
8
|
+
- ai-configuration
|
|
9
|
+
- rule-files
|
|
10
|
+
- memory-management
|
|
11
|
+
- project-setup
|
|
5
12
|
volatility: fast-moving
|
|
6
|
-
last-reviewed:
|
|
13
|
+
last-reviewed: 2026-06-07
|
|
7
14
|
version-pin: null
|
|
8
15
|
sources:
|
|
9
16
|
- url: https://docs.anthropic.com/en/docs/claude-code/memory
|
|
10
17
|
anchor: '#claude-md-files'
|
|
18
|
+
hash: sha256:b6d5f2ae444b33ae686abf63de54471dfad7ff6d1bd57a9c5a6d69cb1096fae0
|
|
19
|
+
retrieved: 2026-06-07
|
|
11
20
|
- url: https://docs.anthropic.com/en/docs/claude-code/settings
|
|
12
21
|
anchor: '#configuration-precedence'
|
|
22
|
+
hash: sha256:664220cfa75c2236b9fc6f2ae7a278019eda3807858463121641a8d470f6e0b7
|
|
23
|
+
retrieved: 2026-06-07
|
|
13
24
|
---
|
|
14
25
|
|
|
15
26
|
# CLAUDE.md Patterns
|
|
@@ -1,15 +1,25 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: coding-conventions
|
|
3
3
|
description: Universal coding standards patterns across languages and linter/formatter configuration
|
|
4
|
-
topics:
|
|
4
|
+
topics:
|
|
5
|
+
- coding-standards
|
|
6
|
+
- linting
|
|
7
|
+
- formatting
|
|
8
|
+
- naming
|
|
9
|
+
- error-handling
|
|
10
|
+
- code-style
|
|
5
11
|
volatility: stable
|
|
6
|
-
last-reviewed:
|
|
12
|
+
last-reviewed: 2026-06-07
|
|
7
13
|
version-pin: null
|
|
8
14
|
sources:
|
|
9
15
|
- url: https://google.github.io/styleguide/
|
|
10
16
|
anchor: '#language-style-guides'
|
|
17
|
+
hash: sha256:250a15511160da60547e0daa20d398c1d0210ee4164a63001b0cc8272e3984ed
|
|
18
|
+
retrieved: 2026-06-07
|
|
11
19
|
- url: https://peps.python.org/pep-0008/
|
|
12
20
|
anchor: '#code-lay-out'
|
|
21
|
+
hash: sha256:8ed37af31c6b19c1384ef5c0cce501bd16d1a55d7984aed4a7d47c037ed5e7d5
|
|
22
|
+
retrieved: 2026-06-07
|
|
13
23
|
---
|
|
14
24
|
|
|
15
25
|
# Coding Conventions
|