Skip to content

Commit 84e693f

Browse files
authored
fix(skillgen): open accepted updates ready for review (#469)
1 parent 7a125f3 commit 84e693f

8 files changed

Lines changed: 20 additions & 20 deletions

File tree

‎COPY.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ These exact strings. Do not paraphrase them per page.
5050
| Nav: MCP server | MCP server · For ChatGPT, Claude, and any app that speaks MCP. | guidance only: a compact row in the Developers menu. Links `/developers?setup=mcp`. The line is the MCP setup card on `/developers` |
5151
| Nav: SDK | SDK · For your own code, with the TypeScript SDK or plain HTTP. | guidance only: a compact row in the Developers menu. Links `/developers?setup=api`. The line is the API setup card on `/developers` |
5252
| Nav: make | Make a skill · Write a Skill for your package or project, then keep it current. · Guides and three authoring Skills · Skillgen drafts updates after each release · Get the steps | guidance only: the large Developers menu card: name, line, its two routes, action. Links `/make-skill`, which routes to the guides or to `/skillgen`. The three are `generate-package-skill`, `generate-project-skill` and `review-skill` |
53-
| Make a skill: Skillgen route | Already ship a package Skill? · Keep it current with Skillgen · After each release tag, Skillgen opens a draft pull request that updates your Skill. npm packages only. | guidance only: the second question on `/make-skill`, under the Skill kinds. Links `/skillgen`. The badge reads "GitHub App" |
53+
| Make a skill: Skillgen route | Already ship a package Skill? · Keep it current with Skillgen · After each release tag, Skillgen opens a pull request that updates your Skill. npm packages only. | guidance only: the second question on `/make-skill`, under the Skill kinds. Links `/skillgen`. The badge reads "GitHub App" |
5454
| Nav: setup guides | All setup guides | guidance only: the link under the Developers menu cards. Links `/developers` |
55-
| Skillgen lead | Keep your package skill current. After each release tag, Skillgen opens a draft pull request that updates the Skill in your repository. You review it and decide what merges. | guidance only: the `/skillgen` line under the H1. Its first two sentences are the page's meta description. A "Make a skill" link above the H1 returns to `/make-skill` |
56-
| Skillgen opt-in | Skillgen opens a draft pull request after each release tag. It runs only on the repositories you turn on here. | guidance only: the intro of the Skillgen view on `/me?view=skillgen`. The `/skillgen` step 02 says the same in its own words: Skillgen never runs on a repository you did not turn on |
55+
| Skillgen lead | Keep your package skill current. After each release tag, Skillgen opens a pull request that updates the Skill in your repository. You review it and decide what merges. | guidance only: the `/skillgen` line under the H1. Its first two sentences are the page's meta description. A "Make a skill" link above the H1 returns to `/make-skill` |
56+
| Skillgen opt-in | Skillgen opens a pull request after each release tag. It runs only on the repositories you turn on here. | guidance only: the intro of the Skillgen view on `/me?view=skillgen`. The `/skillgen` step 02 says the same in its own words: Skillgen never runs on a repository you did not turn on |
5757
| Skillgen groups | Ready · Needs a change · Turn on all (n) · n of n on | guidance only: the two groups on `/me?view=skillgen`. Ready rows say "Updates <package> on each new tag." when on and "Can update <package> when you turn it on." when off. Needs a change rows show the refusal sentence from `skillgenRefusal` |
5858
| CLI H1 | The skilld CLI | guidance only: the `/cli` H1 and its OG title |
5959
| CLI line | Search, run, install, and keep Skills current. | guidance only: the `/cli` line under the H1. It is the CLI's own `--help` line, so change it in the CLI first |

‎GLOSSARY.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Shared terms match the skilld CLI glossary (`skilld-dev/skilld/GLOSSARY.md`). Th
3030
| skilld token | `cli_tokens`, `layers/identity` | Author 1—N token | "skilld token" |
3131
| provenance | Skill detail, cards | Skill 1—1 author and source link | "written by", "source" |
3232
| behavior | `skilld-protocol/behaviors`, Skill page | Skill 1—N behavior | "Skill behaviors" |
33-
| Skillgen | `workers/skill-harness`, `/skillgen` | Repository 1—N draft pull request | "Skillgen" |
33+
| Skillgen | `workers/skill-harness`, `/skillgen` | Repository 1—N pull request | "Skillgen" |
3434
| task search | search box, `layers/registry` | sentence 1—N Skill | "Find skills for this task" |
3535

3636
Collisions
@@ -264,7 +264,7 @@ Existing route paths, table names, and protocol fields keep their identifiers.
264264

265265
### Skillgen
266266

267-
**Is:** the `skilld-skillgen` GitHub App. After each release tag, it opens a draft pull request that updates a package skill. The maintainer reviews it and decides what merges.
267+
**Is:** the `skilld-skillgen` GitHub App. After each release tag, it opens a pull request that updates a package skill. The maintainer reviews it and decides what merges.
268268

269269
**Use for:** the App and its per-repository switch. A maintainer turns Skillgen on for each repository on their account page, and it runs nowhere else. It supports npm packages only.
270270

‎docs/runbooks/skillgen.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<!-- eslint-disable harlanzw/ai-deslop-buzzwords -- GLOSSARY.md defines Harness as a product noun. -->
44

55
Skillgen is the `skilld-skillgen` GitHub App.
6-
It maintains an existing package skill through draft pull requests.
6+
It maintains an existing package skill through pull requests.
77
It runs only on a public repository whose maintainer turned it on at `/me?view=skillgen`.
88
Maintainers set it up from [/skillgen](https://skilld.dev/skillgen).
99

@@ -58,7 +58,7 @@ Each job lists the packages with a Skill on the default branch.
5858
It reads each one's `package.json` from the exact tag commit, and skips private packages.
5959
The tag must equal a package version, as `1.2.3`, `v1.2.3`, or `name@1.2.3`.
6060
If several packages match one tag, the job splits into one job per package.
61-
Each split job opens its own draft on a branch named after the package directory.
61+
Each split job opens its own pull request on a branch named after the package directory.
6262
If the package publication follows the tag, the job waits for it.
6363
The whole job has a thirty minute deadline.
6464

‎layers/identity/app/components/_SkillgenRepositories.vue‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ const signInAgain = computed(() => error.value?.statusCode === 401)
8080
Skillgen repositories
8181
</h2>
8282
<p class="max-w-2xl text-sm leading-relaxed text-muted">
83-
Skillgen opens a draft pull request after each release tag. It runs only on the repositories you turn on here. Then
83+
Skillgen opens a pull request after each release tag. It runs only on the repositories you turn on here. Then
8484
<a :href="INSTALL_URL" target="_blank" rel="noopener" class="text-default underline underline-offset-2 hover:text-primary">install the App</a>
8585
on the same repositories.
8686
<NuxtLink to="/skillgen" class="text-default underline underline-offset-2 hover:text-primary">

‎layers/marketing/app/pages/make-skill.vue‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ useHead({ link: [{ rel: 'canonical', href: 'https://skilld.dev/make-skill' }] })
139139
<span id="skillgen-label" class="text-base font-medium">Keep it current with Skillgen</span>
140140
<UBadge label="GitHub App" color="neutral" variant="outline" size="sm" class="font-mono" />
141141
</span>
142-
<span class="mt-1 block text-sm font-normal text-muted">After each release tag, Skillgen opens a draft pull request that updates your Skill. npm packages only.</span>
142+
<span class="mt-1 block text-sm font-normal text-muted">After each release tag, Skillgen opens a pull request that updates your Skill. npm packages only.</span>
143143
</span>
144144
<UIcon name="i-lucide-arrow-right" class="size-4 shrink-0 text-muted" aria-hidden="true" />
145145
</UButton>
@@ -252,7 +252,7 @@ useHead({ link: [{ rel: 'canonical', href: 'https://skilld.dev/make-skill' }] })
252252
<div v-if="ecosystem === 'npm'" class="mt-8 flex items-start gap-3 border-t border-default pt-6">
253253
<UIcon name="i-lucide-git-pull-request-draft" class="mt-0.5 size-5 shrink-0 text-muted" aria-hidden="true" />
254254
<p class="text-sm leading-relaxed text-muted">
255-
Once the Skill ships, Skillgen can keep it current. After each release tag, it opens a draft pull request that updates the Skill.
255+
Once the Skill ships, Skillgen can keep it current. After each release tag, it opens a pull request that updates the Skill.
256256
<NuxtLink to="/skillgen" class="text-default underline underline-offset-2 hover:text-primary">
257257
Set up Skillgen
258258
</NuxtLink>

‎layers/marketing/app/pages/skillgen.vue‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { pageRobots } from '../utils/page-admissions'
55
const INSTALL_URL = 'https://github.com/apps/skilld-skillgen/installations/new'
66
77
const title = 'Skillgen'
8-
const description = 'Keep your package skill current. After each release tag, Skillgen opens a draft pull request that updates the Skill in your repository.'
8+
const description = 'Keep your package skill current. After each release tag, Skillgen opens a pull request that updates the Skill in your repository.'
99
const canonicalUrl = 'https://skilld.dev/skillgen'
1010
1111
useSeoMeta({
@@ -40,7 +40,7 @@ const codeClass = 'font-mono text-xs text-default'
4040
Skillgen
4141
</h1>
4242
<p class="mt-4 text-base leading-relaxed text-muted">
43-
Keep your package skill current. After each release tag, Skillgen opens a draft pull request that updates the Skill in your repository. You review it and decide what merges.
43+
Keep your package skill current. After each release tag, Skillgen opens a pull request that updates the Skill in your repository. You review it and decide what merges.
4444
</p>
4545
</header>
4646

@@ -66,7 +66,7 @@ const codeClass = 'font-mono text-xs text-default'
6666
Up to 9 files and 64 KiB in total: <code :class="codeClass">SKILL.md</code> and Markdown files under <code :class="codeClass">references/</code>.
6767
</li>
6868
<li>
69-
Release tags that match the package version, such as <code :class="codeClass">1.4.0</code>, <code :class="codeClass">v1.4.0</code> or <code :class="codeClass">name@1.4.0</code>. If one tag releases several packages with Skills, each gets its own draft.
69+
Release tags that match the package version, such as <code :class="codeClass">1.4.0</code>, <code :class="codeClass">v1.4.0</code> or <code :class="codeClass">name@1.4.0</code>. If one tag releases several packages with Skills, each gets its own pull request.
7070
</li>
7171
<li>
7272
npm links each version to its tag commit, through provenance or <code :class="codeClass">gitHead</code>.
@@ -117,7 +117,7 @@ const codeClass = 'font-mono text-xs text-default'
117117
/>
118118
<ul class="mt-4 list-disc space-y-2 pl-5 text-sm leading-relaxed text-muted">
119119
<li><strong class="font-medium text-default">Contents: write.</strong> Skillgen pushes one branch for each release.</li>
120-
<li><strong class="font-medium text-default">Pull requests: write.</strong> Skillgen opens the draft.</li>
120+
<li><strong class="font-medium text-default">Pull requests: write.</strong> Skillgen opens the pull request.</li>
121121
<li>It asks for no Actions, administration, or issues access.</li>
122122
</ul>
123123
</div>
@@ -126,7 +126,7 @@ const codeClass = 'font-mono text-xs text-default'
126126
<span :class="indexClass" aria-hidden="true">04</span>
127127
<div class="min-w-0">
128128
<h3 class="text-base font-medium">
129-
Review the draft
129+
Review the pull request
130130
</h3>
131131
<p class="mt-2 text-sm leading-relaxed text-muted">
132132
Skillgen starts with your latest tag when you install the App. If you turned the repository on after the install, it starts at your next tag. Each new tag starts another run. If npm has not published the version yet, the run waits. Each run must finish within 30 minutes.
@@ -135,7 +135,7 @@ const codeClass = 'font-mono text-xs text-default'
135135
A model drafts the update from the tagged source with the skilld Harness. A separate review must accept it before anything reaches your repository. If the Skill needs no change, Skillgen opens nothing.
136136
</p>
137137
<p class="mt-3 text-sm leading-relaxed text-muted">
138-
Look for a draft pull request titled <code :class="codeClass">docs(skills): update for v1.4.0</code>. It changes only your Skill's folder. Skillgen never overwrites a branch that already exists. You decide what merges.
138+
Look for a pull request titled <code :class="codeClass">docs(skills): update for v1.4.0</code>. It changes only your Skill's folder. Skillgen never overwrites a branch that already exists. You decide what merges.
139139
</p>
140140
</div>
141141
</li>

‎workers/skill-harness/src/github-client.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ export async function publishSkill(context: PreparedTag, files: ProofInput['curr
206206
const title = (context.packageDir ? `docs(skills): update ${packageName} for ${context.tag}` : `docs(skills): update for ${context.tag}`).slice(0, 69)
207207
const generated = commit.parse(await api(`${prefix}/git/commits`, 'POST', { message: title, tree: tree.sha, parents: [context.baseSha] }))
208208
await api(`${prefix}/git/refs`, 'POST', { ref: `refs/heads/${branch}`, sha: generated.sha })
209-
const body = `🤖 This draft was written by the skilld GitHub App.\n\nUpdates the existing Skill for ${context.input.spec}.\nSource tag: ${context.tag}. Source commit: ${context.targetSha}.\n\nThe Harness generated these files and a separate review accepted them.\nA maintainer must check the examples before merging.\n\n> 🤖 AI disclosure: [Harlan Agent Kit](https://github.com/harlan-zw/harlan-agent-kit) modified this description. [My AI open-source policy](https://harlanzw.com/blog/ai-in-open-source).`
210-
const published = pull.parse(await api(`${prefix}/pulls`, 'POST', { title, head: branch, base: context.baseBranch, body, draft: true }))
209+
const body = `🤖 This pull request was written by the skilld GitHub App.\n\nUpdates the existing Skill for ${context.input.spec}.\nSource tag: ${context.tag}. Source commit: ${context.targetSha}.\n\nThe Harness generated these files and a separate review accepted them.\nA maintainer must check the examples before merging.\n\n> 🤖 AI disclosure: [Harlan Agent Kit](https://github.com/harlan-zw/harlan-agent-kit) modified this description. [My AI open-source policy](https://harlanzw.com/blog/ai-in-open-source).`
210+
const published = pull.parse(await api(`${prefix}/pulls`, 'POST', { title, head: branch, base: context.baseBranch, body, draft: false }))
211211
return { _tag: 'Published', url: published.html_url }
212212
}

‎workers/skill-harness/test/github-app.test.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ describe('skill publication', () => {
102102
})
103103
expect(result).toEqual({ _tag: 'Conflict' })
104104
})
105-
it('publishes only Skill changes and marks the pull request as a draft', async () => {
105+
it('publishes only Skill changes in a pull request ready for review', async () => {
106106
const writes: { path: string, body: unknown }[] = []
107107
const result = await publishSkill(context, [{ path: 'SKILL.md', content: 'new' }], async (path, method, body) => {
108108
if (method === 'POST') {
@@ -119,7 +119,7 @@ describe('skill publication', () => {
119119
})
120120
expect(result).toEqual({ _tag: 'Published', url: 'https://github.com/harlan-zw/package/pull/2' })
121121
expect(writes.find(write => write.path.endsWith('/git/trees'))?.body).toMatchObject({ tree: [{ path: 'skills/package/SKILL.md', mode: '100644', type: 'blob', sha: 'd'.repeat(40) }] })
122-
expect(writes.find(write => write.path.endsWith('/pulls'))?.body).toMatchObject({ draft: true, base: 'main' })
122+
expect(writes.find(write => write.path.endsWith('/pulls'))?.body).toMatchObject({ draft: false, base: 'main' })
123123
})
124124
})
125125

0 commit comments

Comments
 (0)