Skip to content

fix(site): update v0.5.0 documentation and hero sizing - #124

Merged
edheltzel merged 3 commits into
masterfrom
docs/v050
Nov 14, 2026
Merged

edheltzel merged 3 commits into
masterfrom
docs/v050

Conversation

@edheltzel

Copy link
Copy Markdown
Owner

Intent

Document v0.5.0 on the website and plan: landing page covers pinned skills and MCP servers, plugin-manager plan marked done

What Changed

  • Update landing copy and metadata to cover pinned skills, MCP servers, utility lifecycle, release binaries, and uninstall behavior.
  • Let the landing hero grow with its content instead of using a fixed height.
  • Clarify README skill installation guidance, mark the plugin-manager plan complete in v0.5.0, and close the related provisioner task.

Risk Assessment

✅ Low: The documentation changes satisfy the stated intent, resolve both prior findings, and introduce no runtime behavior.

Testing

Built base and changed sites, reproduced and fixed spacing and 320px hero-clipping regressions, then completed isolated Chrome checks covering copy, metadata, docs links, and responsive layouts; retained visual evidence, manually confirmed plan completion, and cleaned up disposable services and outputs.

  • Live validation: ✅ go - 4 of 5 scenarios driven live against the product
Scenario Result Live Evidence
Open the landing page and see pinned skills, MCP registration, binary installation, and matching page metadata ✅ pass live Final desktop landing page; browser-transcript.log
Read utility lifecycle and guarantees without an immutable-server promise: pins cover skills and manifests ✅ pass live Final desktop landing page; validate-website.py
Follow installation, add-utility, and publish-utility links to working docs headings and read the updated README content ✅ pass live browser-transcript.log; Published pinned-source documentation
Read expanded copy at 320, 390, 860, and 861 pixels without horizontal clipping, hidden docs buttons, or footer overlap ✅ pass live check-hero-bounds.py; target-hero-320.json; fixed-hero-320.json; final mobile screenshots; website-results.json
Read the plugin-manager plan as completed in v0.5.0 with reconciled steps and no open tasks ⏸️ untested no The plan is repository Markdown intentionally excluded from website publication, so its editorial completion record has no live product surface. Manual inspection confirmed the completed status, deliv…

Final desktop landing page

320px hero clipping before fix

Final 320px layout

Final 390px layout

Published pinned-source documentation

Evidence: Live browser transcript

$ ["chrome-devtools-axi", "open", "http://127.0.0.1:4317/"]
page:
  title: "GAP: Global Agent Policies"
  url: "http://127.0.0.1:4317/"
  refs: 125
snapshot:
uid=g1:1_0 RootWebArea "GAP: Global Agent Policies" url="http://127.0.0.1:4317/"
  uid=g1:1_1 link "Skip to content" url="http://127.0.0.1:4317/#content"
  uid=g1:1_3 main
    uid=g1:1_4 "Illustration: one large dithered disc of text, lit on its upper left rim in the accent colour, fully on screen with space around it."
    uid=g1:1_5 link "GAP" url="http://127.0.0.1:4317/"
    uid=g1:1_7 navigation "Primary"
      uid=g1:1_8 link "DOCS" url="http://127.0.0.1:4317/docs/"
      uid=g1:1_10 link "GITHUB" url="https://github.com/edheltzel/GAP"
      uid=g1:1_12 button "Colour theme: auto (follows system). Click to change."
    uid=g1:1_13 "GLOBAL AGENT POLICIES"
    uid=g1:1_14 heading "One set of rules. Every coding agent." level="1"
    uid=g1:1_15 "Write your policy once. "
    uid=g1:1_16 "gap sync"
    uid=g1:1_17 " copies it into the file each agent already reads, then installs pinned skills and registers MCP servers."
    uid=g1:1_18 "INSTALL"
    uid=g1:1_19 "$"
    uid=g1:1_20 "curl -fsSL https://raw.githubusercontent.com/edheltzel/GAP/master/scripts/install.sh | sh"
    uid=g1:1_21 button "COPY"
    uid=g1:1_22 "No Go needed: without it, the script installs a checksum-verified release binary. See the"
    uid=g1:1_23 link "installation requirements" url="http://127.0.0.1:4317/docs/#install-gap"
    uid=g1:1_25 "."
    uid=g1:1_26 link "Read the docs" url="http://127.0.0.1:4317/docs/#install-gap"
    uid=g1:1_28 link "GITHUB" url="https://github.com/edheltzel/GAP"
    uid=g1:1_30 "GAP"
    uid=g1:1_31 link "DOCS →" url="http://127.0.0.1:4317/docs/"
    uid=g1:1_33 link "GITHUB" url="https://github.com/edheltzel/GAP"
    uid=g1:1_35 "© 2026 GAP"
    uid=g1:1_36 region "Write it once. Every agent reads it."
      uid=g1:1_37 "§ 01"
      uid=g1:1_38 "HOW IT WORKS"
      uid=g1:1_39 heading "Write it once. Every agent reads it." level="2"
      uid=g1:1_40 "One rules file, "
      uid=g1:1_41 "global/AGENTS.md"
      uid=g1:1_42 ". "
      uid=g1:1_43 "gap sync"
      uid=g1:1_44 " copies it into the file each agent already reads, copies skills from pinned commits, and registers the MCP servers declared in pinned utility manifests."
      uid=g1:1_45 "STEP"
      uid=g1:1_46 "01"
      uid=g1:1_47 heading "Write the rules" level="3"
      uid=g1:1_48 "Edit "
      uid=g1:1_49 "global/AGENTS.md"
      uid=g1:1_50 ", merge it to "
      uid=g1:1_51 "master"
      uid=g1:1_52 ", and pull."
      uid=g1:1_53 "gap sync"
      uid=g1:1_54 " only publishes merged rules."
      uid=g1:1_55 "STEP"
      uid=g1:1_56 "02"
      uid=g1:1_57 heading "Run gap sync" level="3"
      uid=g1:1_58 "Copies your rules into every agent's file, copies pinned skills straight from git with no Node, and registers MCP servers through the Claude, Codex, and Pi CLIs."
      uid=g1:1_59 "STEP"
      uid=g1:1_60 "03"
      uid=g1:1_61 heading "Check status" level="3"
      uid=g1:1_62 "gap status"
      uid=g1:1_63 " draws a table of each component's pin and any skill drift. It writes nothing and exits 1 on drift. "
      uid=g1:1_64 "gap list"
      uid=g1:1_65 " shows what is installed."
    uid=g1:1_66 region "Add any utility. Straight from GitHub."
      uid=g1:1_67 "§ 02"
      uid=g1:1_68 "UTILITIES"
      uid=g1:1_69 heading "Add any utility. Straight from GitHub." level="2"
      uid=g1:1_70 "A repo with a "
      uid=g1:1_71 "gap-utility.toml"
      uid=g1:1_72 " is a utility. Add it the way you add a lazy.nvim plugin:"
      uid=g1:1_73 "gap add owner/repo"
      uid=g1:1_74 "."
      uid=g1:1_75 "ADD"
      uid=g1:1_76 "01"
      uid=g1:1_77 heading "gap add owner/repo" level="3"
      uid=g1:1_78 "Pins the repo in your own lock, copies its skills and commands, registers MCP servers, and runs its install hook."
      uid=g1:1_79 "gap search"
      uid=g1:1_80 " finds one."
      uid=g1:1_81 "UPDATE"
      uid=g1:1_82 "02"
      uid=g1:1_83 heading "gap update" level="3"
      uid=g1:1_84 "Moves each pin to the newest commit and keeps any skill you edited. "
      uid=g1:1_85 "gap sync"
      uid=g1:1_86 " never moves one."
      uid=g1:1_87 "REMOVE"
      uid=g1:1_88 "03"
      uid=g1:1_89 heading "gap remove <id>" level="3"
      uid=g1:1_90 "Runs its uninstall hook, removes its MCP servers, and moves its files to a backup folder, so nothing is lost."
      uid=g1:1_91 link "Add a utility" url="http://127.0.0.1:4317/docs/#add-a-utility"
      uid=g1:1_93 link "PUBLISH YOUR OWN" url="http://127.0.0.1:4317/docs/#publish-a-utility"
    uid=g1:1_95 region "Quiet by default. Nothing moves on its own."
      uid=g1:1_96 "§ 03"
      uid=g1:1_97 "GUARANTEES"
      uid=g1:1_98 heading "Quiet by default. Nothing moves on its own." level="2"
      uid=g1:1_99 "PINS"
      uid=g1:1_100 "Sync never moves a skill pin."
      uid=g1:1_101 " Only "
      uid=g1:1_102 "gap pin <id>@<ref>"
      uid=g1:1_103 " changes the distro's"
      uid=g1:1_104 "gap.lock"
      uid=g1:1_105 "."
      uid=g1:1_106 "HOOKS"
      uid=g1:1_107 "A utility's hook asks before it runs."
      uid=g1:1_108 " List a repo or "
      uid=g1:1_109 "owner/*"
      uid=g1:1_110 " under"
      uid=g1:1_111 "[trust]"
      uid=g1:1_112 " to stop the questions."
      uid=g1:1_113 "STATUS"
      uid=g1:1_114 "Drift is a signal, not a crash."
      uid=g1:1_115 " "
      uid=g1:1_116 "gap status"
      uid=g1:1_117 " writes nothing and exits 1 on drift."
      uid=g1:1_118 "FILES"
      uid=g1:1_119 "It asks before it changes a file it did not write."
      uid=g1:1_120 " In a shell with no terminal, it prints"
      uid=g1:1_121 "Refusing to replace foreign file"
      uid=g1:1_122 ", skips that file, publishes the rest, and exits 1."
      uid=g1:1_123 "UNINSTALL"
      uid=g1:1_124 "It removes only what it recorded."
      uid=g1:1_125 " "
      uid=g1:1_126 "gap uninstall"
      uid=g1:1_127 " previews first, backs up what it removes, and leaves your other files alone."
    uid=g1:1_128 heading "One set of rules. Every coding agent." level="2"
    uid=g1:1_129 link "Read the docs" url="http://127.0.0.1:4317/docs/"
  uid=g1:1_131 contentinfo
    uid=g1:1_132 "GAP · GLOBAL AGENT POLICIES"
    uid=g1:1_133 navigation "Footer"
      uid=g1:1_134 link "DOCS" url="http://127.0.0.1:4317/docs/"
      uid=g1:1_136 link "CONCEPTS" url="http://127.0.0.1:4317/docs/concepts/"
      uid=g1:1_138 link "GITHUB" url="https://github.com/edheltzel/GAP"
help[4]:
  Run `chrome-devtools-axi click @g1:1_12` to click the "Colour theme: auto (follows system). Click to change." button
  Run `chrome-devtools-axi click @g1:1_1` to click the "Skip to content" link
  Run `chrome-devtools-axi scroll down` to scroll down
  Use `chrome-devtools-axi eval <expr>` for JS expressions. For multi-statement code, pass a function: `eval "() => { ...; return result }"`

Exit status: 0

$ ["chrome-devtools-axi", "resize", "1440", "1000"]
error: "The browser reconnected and every page id changed, so no page is currently selected"
code: BROWSER_ERROR
help[2]: Run `chrome-devtools-axi pages` to list the current tabs and their new ids,"Run `chrome-devtools-axi selectpage <id>` to re-select a tab after the reconnect, then retry"

Exit status: 1

$ ["chrome-devtools-axi", "pages"]
pages[1]{id,url,selected}:
  3,about:blank,false
help[2]:
  Run `chrome-devtools-axi selectpage <id>` to switch tabs
  Run `chrome-devtools-axi newpage <url>` to open a new tab

Exit status: 0

$ ["chrome-devtools-axi", "open", "http://127.0.0.1:4317/"]
page:
  title: "GAP: Global Agent Policies"
  url: "http://127.0.0.1:4317/"
  refs: 125
snapshot:
uid=g2:2_0 RootWebArea "GAP: Global Agent Policies" url="http://127.0.0.1:4317/"
  uid=g2:2_1 link "Skip to content" url="http://127.0.0.1:4317/#content"
  uid=g2:2_3 main
    uid=g2:2_4 "Illustration: one large dithered disc of text, lit on its upper left rim in the accent colour, fully on screen with space around it."
    uid=g2:2_5 link "GAP" url="http://127.0.0.1:4317/"
    uid=g2:2_7 navigation "Primary"
      uid=g2:2_8 link "DOCS" url="http://127.0.0.

... [357030 bytes truncated] ...

      uid=g11:11_63 "§ 02"
      uid=g11:11_64 "UTILITIES"
      uid=g11:11_65 heading "Add any utility. Straight from GitHub." level="2"
      uid=g11:11_66 "A repo with a "
      uid=g11:11_67 "gap-utility.toml"
      uid=g11:11_68 " is a utility. Add it the way you add a lazy.nvim plugin:"
      uid=g11:11_69 "gap add owner/repo"
      uid=g11:11_70 "."
      uid=g11:11_71 "ADD"
      uid=g11:11_72 "01"
      uid=g11:11_73 heading "gap add owner/repo" level="3"
      uid=g11:11_74 "Pins the repo in your own lock, copies its skills and commands, registers MCP servers, and runs its install hook. "
      uid=g11:11_75 "gap search"
      uid=g11:11_76 " finds one."
      uid=g11:11_77 "UPDATE"
      uid=g11:11_78 "02"
      uid=g11:11_79 heading "gap update" level="3"
      uid=g11:11_80 "Moves each pin to the newest commit and keeps any skill you edited. "
      uid=g11:11_81 "gap sync"
      uid=g11:11_82 " never moves one."
      uid=g11:11_83 "REMOVE"
      uid=g11:11_84 "03"
      uid=g11:11_85 heading "gap remove <id>" level="3"
      uid=g11:11_86 "Runs its uninstall hook, removes its MCP servers, and moves its files to a backup folder, so nothing is lost."
      uid=g11:11_87 link "Add a utility" url="http://127.0.0.1:4317/docs/#add-a-utility"
      uid=g11:11_89 link "PUBLISH YOUR OWN" url="http://127.0.0.1:4317/docs/#publish-a-utility"
    uid=g11:11_91 region "Quiet by default. Nothing moves on its own."
      uid=g11:11_92 "§ 03"
      uid=g11:11_93 "GUARANTEES"
      uid=g11:11_94 heading "Quiet by default. Nothing moves on its own." level="2"
      uid=g11:11_95 "PINS"
      uid=g11:11_96 "Sync never moves a skill pin."
      uid=g11:11_97 " Only "
      uid=g11:11_98 "gap pin <id>@<ref>"
      uid=g11:11_99 " changes the distro's"
      uid=g11:11_100 "gap.lock"
      uid=g11:11_101 "."
      uid=g11:11_102 "HOOKS"
      uid=g11:11_103 "A utility's hook asks before it runs."
      uid=g11:11_104 " List a repo or "
      uid=g11:11_105 "owner/*"
      uid=g11:11_106 " under"
      uid=g11:11_107 "[trust]"
      uid=g11:11_108 " to stop the questions."
      uid=g11:11_109 "STATUS"
      uid=g11:11_110 "Drift is a signal, not a crash."
      uid=g11:11_111 " "
      uid=g11:11_112 "gap status"
      uid=g11:11_113 " writes nothing and exits 1 on drift."
      uid=g11:11_114 "FILES"
      uid=g11:11_115 "It asks before it changes a file it did not write."
      uid=g11:11_116 " In a shell with no terminal, it prints"
      uid=g11:11_117 "Refusing to replace foreign file"
      uid=g11:11_118 ", skips that file, publishes the rest, and exits 1."
      uid=g11:11_119 "UNINSTALL"
      uid=g11:11_120 "It removes only what it recorded."
      uid=g11:11_121 " "
      uid=g11:11_122 "gap uninstall"
      uid=g11:11_123 " previews first, backs up what it removes, and leaves your other files alone."
    uid=g11:11_124 heading "One set of rules. Every coding agent." level="2"
    uid=g11:11_125 link "Read the docs" url="http://127.0.0.1:4317/docs/"
  uid=g11:11_127 contentinfo
    uid=g11:11_128 "GAP · GLOBAL AGENT POLICIES"
    uid=g11:11_129 navigation "Footer"
      uid=g11:11_130 link "DOCS" url="http://127.0.0.1:4317/docs/"
      uid=g11:11_132 link "CONCEPTS" url="http://127.0.0.1:4317/docs/concepts/"
      uid=g11:11_134 link "GITHUB" url="https://github.com/edheltzel/GAP"
help[4]:
  Run `chrome-devtools-axi click @g11:11_12` to click the "Colour theme: dark. Click to change." button
  Run `chrome-devtools-axi click @g11:11_1` to click the "Skip to content" link
  Run `chrome-devtools-axi scroll down` to scroll down
  Use `chrome-devtools-axi eval <expr>` for JS expressions. For multi-statement code, pass a function: `eval "() => { ...; return result }"`

Exit status: 0

$ ["chrome-devtools-axi", "emulate", "--viewport", "861x600x1"]
emulated:
  viewport: 861x600x1

Exit status: 0

$ ["chrome-devtools-axi", "eval", "async () => {\n      await document.fonts.ready;\n      const selectors = ['.sub', '.hint', '#how .lead', '#how .card p', '#utilities .card p', '#safe .rows > div:last-child p'];\n      const blocks = selectors.flatMap(s => [...document.querySelectorAll(s)]).map(el => {\n        const range = document.createRange(); range.selectNodeContents(el);\n        const rects = [...range.getClientRects()].filter(r => r.width > 0 && r.height > 0);\n        return {text: el.innerText, left: Math.min(...rects.map(r => r.left)), right: Math.max(...rects.map(r => r.right))};\n      });\n      if (blocks.some(b => b.left < -1 || b.right > innerWidth + 1)) throw new Error('New copy exceeds viewport: ' + JSON.stringify(blocks));\n      if (document.documentElement.scrollWidth > innerWidth) throw new Error('Horizontal page overflow');\n      const cta = document.querySelector('.copy .cta').getBoundingClientRect();\n      const stage = document.querySelector('#stage').getBoundingClientRect();\n      const footer = document.querySelector('.foot').getBoundingClientRect();\n      if (cta.bottom > stage.bottom || cta.bottom > footer.top) throw new Error('Hero clips or overlaps docs links');\n      return {hero: {stageBottom:stage.bottom, ctaBottom:cta.bottom, footerTop:footer.top}, viewport:[innerWidth,innerHeight], pageWidth:document.documentElement.scrollWidth, blocks, themeButton:document.querySelector('nav[aria-label=\"Primary\"] button').getAttribute('aria-label')};\n    }"]
result: "{\"hero\":{\"stageBottom\":701.53125,\"ctaBottom\":601.53125,\"footerTop\":644.53125},\"viewport\":[861,600],\"pageWidth\":861,\"blocks\":[{\"text\":\"Write your policy once. gap sync copies it into the file each agent already reads, then installs pinned skills and registers MCP servers.\",\"left\":24,\"right\":432.203125},{\"text\":\"No Go needed: without it, the script installs a checksum-verified release binary. See the installation requirements.\",\"left\":24,\"right\":460.796875},{\"text\":\"One rules file, global/AGENTS.md. gap sync copies it into the file each agent already reads, copies skills from pinned commits, and registers the MCP servers declared in pinned utility manifests.\",\"left\":24,\"right\":497.859375},{\"text\":\"Edit global/AGENTS.md, merge it to master, and pull.gap sync only publishes merged rules.\",\"left\":47,\"right\":257.984375},{\"text\":\"Copies your rules into every agent's file, copies pinned skills straight from git with no Node, and registers MCP servers through the Claude, Codex, and Pi CLIs.\",\"left\":323.328125,\"right\":524.03125},{\"text\":\"gap status draws a table of each component's pin and any skill drift. It writes nothing and exits 1 on drift. gap list shows what is installed.\",\"left\":599.65625,\"right\":798.59375},{\"text\":\"Pins the repo in your own lock, copies its skills and commands, registers MCP servers, and runs its install hook. gap search finds one.\",\"left\":47,\"right\":255.34375},{\"text\":\"Moves each pin to the newest commit and keeps any skill you edited. gap sync never moves one.\",\"left\":323.328125,\"right\":522.40625},{\"text\":\"Runs its uninstall hook, removes its MCP servers, and moves its files to a backup folder, so nothing is lost.\",\"left\":599.65625,\"right\":805.21875},{\"text\":\"It removes only what it recorded. gap uninstall previews first, backs up what it removes, and leaves your other files alone.\",\"left\":248,\"right\":798.234375}],\"themeButton\":\"Colour theme: dark. Click to change.\"}"
help[1]:
  Run `chrome-devtools-axi snapshot` to see current page state

Exit status: 0

$ ["chrome-devtools-axi", "screenshot", "~/.no-mistakes/evidence/01M7CAVX5AHAZC2P1E94D9WS27/tablet-861-final.png", "--full-page"]
screenshot: ~/.no-mistakes/evidence/01M7CAVX5AHAZC2P1E94D9WS27/tablet-861-final.png

Exit status: 0

$ ["chrome-devtools-axi", "console"]
console:
Emulating viewport: {"deviceScaleFactor":1,"isMobile":false,"hasTouch":false,"isLandscape":false,"width":861,"height":600}
## Console messages
<no console messages found>
help[2]:
  Run `chrome-devtools-axi console-get <id>` to see a specific message
  Run `chrome-devtools-axi console --type error` to filter by type

Exit status: 0

$ ["chrome-devtools-axi", "stop"]
status: stopped

Exit status: 0
Evidence: Plan completion manual review
Manual review of the plan as the owned editorial completion record, against the user intent and recorded R1 decision.

- Overall status is "completed in v0.5.0".
- The former missing-capability table now records delivered outcomes.
- All eight steps record completion, with supported harness destinations and exceptions stated.
- Todo says "None. All eight steps are complete for the supported harness destinations above."
- This review does not execute the CLI behaviors the historical plan describes.
- The plan has no runtime route. site/AGENTS.md explicitly excludes docs/plans from published pages, so the completion record receives manual verification only.

Pipeline

Updates from git push no-mistakes

✅ **Intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

🔧 **Review** - 2 issues found → auto-fixed ✅
  • ⚠️ docs/plans/2026-11-12-gap-plugin-manager-plan.md:33 - The required criterion says "plugin-manager plan marked done", but the diff marks only individual steps complete, including "7. Completed: drop the skills.sh path". The overall status remains "approved" at line 3, "Missing:" remains at line 15, steps 2–4 remain unreconciled at lines 28–30, and the Todo entries remain open at lines 45–50. Mark the overall plan complete and reconcile these remaining completion records.
  • ⚠️ site/src/pages/index.astro:67 - "Each pinned to one commit" overstates the guarantee for MCP servers. The documented URL-backed server path registers a remote endpoint; changing that service leaves the utility commit and registration digest unchanged (cmd/gap/mcp.go:94, cmd/gap/mcp.go:283, cmd/gap/mcp.go:370). Narrow the copy to say that utility manifests and copied skills are pinned, rather than promising that every MCP server implementation is pinned.

🔧 Fix applied.
✅ Re-checked - no issues remain.

✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 4 of 5 scenarios driven live against the product
Scenario Result Live Evidence
Open the landing page and see pinned skills, MCP registration, binary installation, and matching page metadata ✅ pass live Final desktop landing page; browser-transcript.log
Read utility lifecycle and guarantees without an immutable-server promise: pins cover skills and manifests ✅ pass live Final desktop landing page; validate-website.py
Follow installation, add-utility, and publish-utility links to working docs headings and read the updated README content ✅ pass live browser-transcript.log; Published pinned-source documentation
Read expanded copy at 320, 390, 860, and 861 pixels without horizontal clipping, hidden docs buttons, or footer overlap ✅ pass live check-hero-bounds.py; target-hero-320.json; fixed-hero-320.json; final mobile screenshots; website-results.json
Read the plugin-manager plan as completed in v0.5.0 with reconciled steps and no open tasks ⏸️ untested no The plan is repository Markdown intentionally excluded from website publication, so its editorial completion record has no live product surface. Manual inspection confirmed the completed status, deliv…
  • Ran npm run build in site/ before testing and after the spacing and layout fixes; all builds exited 0.
  • Built and served disposable base-commit and changed websites using npm run preview on localhost ports 4318 and 4317.
  • Reproduced missing word and sentence separation through live browser assertions; verified corrected rendered text after rebuilding.
  • Ran python3 ~/.no-mistakes/evidence/01M7CAVX5AHAZC2P1E94D9WS27/check-hero-bounds.py and its after mode: base passed, target clipping reproduced, fixed page passed.
  • Ran python3 ~/.no-mistakes/evidence/01M7CAVX5AHAZC2P1E94D9WS27/validate-website.py; the final complete run exited 0.
  • Captured and visually inspected desktop, mobile, and rendered documentation screenshots.
  • Manually reviewed the plugin-manager completion record against the required intent and recorded R1 decision.
  • Stopped both preview servers and browser sessions, confirmed their ports closed, and removed disposable worktree outputs while preserving prepared dependencies.
✅ **Document** - passed

✅ No issues found.

✅ **Lint** - passed

✅ No issues found.

✅ **Push** - passed

✅ No issues found.

… and new output

- readme: pinned components replace skills.sh; first sync takes over existing installs
- readme: command table, install without Go, uninstall, search, terminal output
- concepts and agents: drop global/skills.json and the manifest group
- site: landing page covers skills and MCP servers for every harness
- plans: mark plugin-manager step 7 done

@pullfrog pullfrog Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ No new issues found.

Reviewed changes across all seven files, including documentation accuracy and responsive hero behavior.

  • Website copy and metadata: Updates pinned-skill, MCP, binary-installation, utility lifecycle, and uninstall guidance.
  • Hero sizing: Allows content to expand the hero while preserving space for its footer and docs links.
  • README and completion records: Clarifies skill installation and reconciles the plugin-manager plan, provisioner follow-up, and task status.

Validation passed: typecheck, build, links, share metadata, contrast, TOC navigation, hero-start, and browser layout checks from 320px to 1440px.

Pullfrog  | View workflow run | Using gpt-6.1-sol | 𝕏

@edheltzel
edheltzel merged commit 1efbb67 into master Nov 14, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant