Repository navigation
feat: add a Developers menu and a per-repository Skillgen opt-in - #450
Conversation
The header listed CLI and Make a skill as loose links, and the MCP server, the SDK and the skilld-skillgen GitHub App had no entry point at all. One Developers menu now holds them as cards, as nuxtseo.com groups its tools. The skilld-skillgen App had no page that explains its requirements or how to install it, so /skillgen adds one. It states the pilot limit while the Worker processes only GITHUB_PILOT_REPOSITORIES.
🤖 MERGED
GitHub merged this pull request.
49017288-f14d-4625-8933-22b0c8425567 Selected findings run after merge and open separate pull requests. |
The panel renders through reka-ui's Teleport, so it never carried the scope attribute and its open and close animations never ran. The hover bridge also covered the bottom edge of the other header buttons. On /skillgen, installing before joining the pilot loses the first run, since the Worker drops installs from repositories outside the allowlist. The page now says to join first. The Worker accepts 9 files, not 8.
|
🤖 Harlan Agent Kit Agent assessment of head 7e390a1. The Service Review for this head was stopped before it started. At 01:31 UTC six Review Tasks were queued against four free host slots, and this pull request sat at Queue position 17. A read-only subagent reviewed the full diff instead. No finding scored above 80. Fixed anyway in fda6067:
Logged, not changed:
This assessment does not replace a Service |
Harlan opened Skillgen to everyone. The webhook dropped tags from any repository outside GITHUB_PILOT_REPOSITORIES, so installs elsewhere never ran. The allowlist is gone, and /skillgen no longer asks maintainers to join a pilot first. The runbook now names the App and its queue limits.
Harlan wants maintainers to opt in each repository explicitly, so an App install alone no longer runs anything. A signed-in maintainer turns Skillgen on per repository at /me?view=skillgen. The switch needs admin or maintain access, a public repository, a root package.json (npm only), and the Skill where the Worker reads it. Before it queues a job, the skill-harness Worker asks skilld.dev which repositories in the event opted in. If the site does not answer, it queues nothing.
There was a problem hiding this comment.
Harlan Agent Kit posted this automated review. AI open source policy.
Automated Review: READY.




🔗 Linked issue
None
❓ Type of change
📚 Description
Harlan asked for header menus like the ones on nuxtseo.com. The first is a Developers menu with CLI, MCP, SDK, Make a skill and Skillgen as cards, each with an icon and atmosphere. Until now the header listed CLI and Make a skill as plain links. Nothing in it led to the MCP server, the SDK, or the
skilld-skillgenGitHub App, and the App had no page. Harlan also opened Skillgen to every public npm package, with an explicit opt-in for each repository./developers. The mobile menu lists the same five items as a group..editorial-atmospherelayer. CLI takes rose because it is the recommended path. In dark mode the cards double the ambient opacity, because 0.28 disappears on a card this small.NavigationMenuprimitives, as nuxtseo.com does, soreka-uiis now a direct dependency. It is pinned to 2.10.4, the exact version@nuxt/uipins, so the client keeps one copy.idwith no value and html-validate failed. A fixedheader-developers-triggerid replaces it, and the panel names that id as its label./me?view=skillgen. The switch needs admin or maintain access, a public repository, a rootpackage.json(npm only), and the Skill where the Worker reads it. Migration 0140 stores the switches inskillgen_repositories, and account deletion removes them.GITHUB_PILOT_REPOSITORIESallowlist is gone. Before it queues a job, the Worker posts the event's repositories to/api/internal/skillgen/opt-insand keeps the opted-in ones. If skilld.dev does not answer, the webhook returns 503 and queues nothing./skillgen. Four steps: check the repository, turn it on, install the App, review the draft. The requirements mirror the Worker's checks. The path is inFREEZE_AUDIT_PATHS, so it rendersnoindex,followand stays out of the sitemap.COPY.mdgains the menu and Skillgen strings.GLOSSARY.mddefines Skillgen.DESIGN.mdrecords the cards as the one atmosphere in UI chrome. The runbook moves todocs/runbooks/skillgen.mdand covers the opt-in, the shared secret and the queue limits.📝 Migration
NUXT_SKILLGEN_TOKENon the site Worker and asSKILLGEN_SITE_TOKENonskilld-harness-proof. Without it, the opt-in endpoint refuses the Worker and the webhook answersAPP_UNCONFIGURED.target=harness-proof. The live Worker keeps the old allowlist until then.harlan-zw/nuxt-skew-protectionat/me?view=skillgen. The new Worker skips every repository that is not opted in, including the pilot one.