Skip to content

Commit 55dd01f

Browse files
committed
Remove virus-scan from the repo and keep the pack on the canonical 4-skill surface
The desired production state is a 4-skill pack with no legacy alias in GitHub or the source tree. This removes virus-scan from the manifest, README, and skill directories, and keeps CI aligned with the canonical pack while still explicitly failing if the removed name reappears in the README. Constraint: Keep GitHub/source clean even if external skills.sh caching still lags behind Rejected: Preserve virus-scan as a legacy alias | the user explicitly does not want it on GitHub or in the repo Confidence: high Scope-risk: moderate Reversibility: clean Directive: Treat the 4 canonical skills as the only pack API; if a stale external page remains, fix it externally rather than carrying the alias in source Tested: Local `npx skills add . --list --full-depth`; local isolated `--all` install from repo path; local search confirms only the workflow guard string mentions virus-scan Not-tested: External skills.sh cache refresh timing after push; GitHub Actions execution after push
1 parent afd7ba0 commit 55dd01f

5 files changed

Lines changed: 7 additions & 114 deletions

File tree

.github/workflows/verify-pack.yml

Lines changed: 7 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -80,34 +80,6 @@ jobs:
8080
if (manifest.aliases && !Array.isArray(manifest.aliases)) {
8181
fail("Manifest aliases must be an array when present.");
8282
}
83-
84-
for (const alias of manifest.aliases ?? []) {
85-
if (!alias.name || !alias.path || !alias.replaced_by) {
86-
fail(`Alias entry is missing required fields: ${JSON.stringify(alias)}`);
87-
}
88-
if (seenNames.has(alias.name)) {
89-
fail(`Duplicate manifest entry for alias: ${alias.name}`);
90-
}
91-
if (!alias.deprecated) {
92-
fail(`Alias ${alias.name} must be marked deprecated.`);
93-
}
94-
if (!canonicalNames.has(alias.replaced_by)) {
95-
fail(`Alias ${alias.name} points to missing replacement target: ${alias.replaced_by}`);
96-
}
97-
seenNames.add(alias.name);
98-
const aliasPath = path.resolve(alias.path);
99-
const aliasFile = path.join(aliasPath, "SKILL.md");
100-
if (!fs.existsSync(aliasPath) || !fs.statSync(aliasPath).isDirectory()) {
101-
fail(`Alias path does not exist: ${alias.path}`);
102-
}
103-
if (!fs.existsSync(aliasFile)) {
104-
fail(`Alias is missing SKILL.md: ${alias.path}`);
105-
}
106-
const frontmatterName = readFrontmatterName(aliasFile);
107-
if (frontmatterName !== alias.name) {
108-
fail(`Manifest alias/path mismatch for ${alias.name}; SKILL.md declares ${frontmatterName}`);
109-
}
110-
}
11183
'
11284
11385
- name: Verify discovery output matches manifest
@@ -117,10 +89,7 @@ jobs:
11789
OUTPUT="$OUTPUT" node -e '
11890
const fs = require("fs");
11991
const manifest = JSON.parse(fs.readFileSync("skills-pack.json", "utf8"));
120-
const names = [
121-
...manifest.skills.map((skill) => skill.name),
122-
...(manifest.aliases ?? []).map((skill) => skill.name),
123-
];
92+
const names = manifest.skills.map((skill) => skill.name);
12493
const output = process.env.OUTPUT ?? "";
12594
const missing = names.filter((name) => !output.includes(name));
12695
if (missing.length) {
@@ -149,10 +118,7 @@ jobs:
149118
const fs = require("fs");
150119
const path = require("path");
151120
const manifest = JSON.parse(fs.readFileSync("skills-pack.json", "utf8"));
152-
const expected = [
153-
...manifest.skills.map((skill) => skill.name),
154-
...(manifest.aliases ?? []).map((skill) => skill.name),
155-
].sort();
121+
const expected = manifest.skills.map((skill) => skill.name).sort();
156122
const installedDir = path.join(process.env.TMP_DIR, ".agents", "skills");
157123
const installed = fs.readdirSync(installedDir, { withFileTypes: true })
158124
.filter((entry) => entry.isDirectory())
@@ -166,26 +132,13 @@ jobs:
166132
}
167133
'
168134
169-
- name: Verify deprecated alias install path still works
170-
env:
171-
PACK_SOURCE: ${{ github.workspace }}
172-
run: |
173-
TMP_DIR="$(mktemp -d)"
174-
pushd "$TMP_DIR" >/dev/null
175-
npx skills add "$PACK_SOURCE" -y --agent codex --skill virus-scan --copy
176-
popd >/dev/null
177-
test -f "$TMP_DIR/.agents/skills/virus-scan/SKILL.md"
178-
179135
- name: Verify README stays aligned with pack surface
180136
run: |
181137
node -e '
182138
const fs = require("fs");
183139
const manifest = JSON.parse(fs.readFileSync("skills-pack.json", "utf8"));
184140
const readme = fs.readFileSync("README.md", "utf8");
185-
const names = [
186-
...manifest.skills.map((skill) => skill.name),
187-
...(manifest.aliases ?? []).map((skill) => skill.name),
188-
];
141+
const names = manifest.skills.map((skill) => skill.name);
189142
for (const skillName of names) {
190143
const installNeedle = `--skill ${skillName}`;
191144
const commandNeedle = `\`$${skillName}\``;
@@ -198,4 +151,8 @@ jobs:
198151
process.exit(1);
199152
}
200153
}
154+
if (readme.includes("virus-scan")) {
155+
console.error("README still contains removed skill name: virus-scan");
156+
process.exit(1);
157+
}
201158
'

README.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ npx skills add https://github.com/jasperdevs/computer-doctor --skill computer-do
1818
npx skills add https://github.com/jasperdevs/computer-doctor --skill security-scan
1919
npx skills add https://github.com/jasperdevs/computer-doctor --skill devtools-audit
2020
npx skills add https://github.com/jasperdevs/computer-doctor --skill update-audit
21-
npx skills add https://github.com/jasperdevs/computer-doctor --skill virus-scan
2221
```
2322

2423
</details>
@@ -31,7 +30,6 @@ npx skills add https://github.com/jasperdevs/computer-doctor --skill virus-scan
3130
| `$security-scan` | Endpoint protection, firewall status, suspicious processes, persistence, autoruns, risky permissions, and obvious malware signals. | [open](https://skills.sh/jasperdevs/computer-doctor/security-scan) |
3231
| `$devtools-audit` | PATH problems, shell setup, runtimes, SDKs, package managers, Git tooling, and dead or conflicting installs. | [open](https://skills.sh/jasperdevs/computer-doctor/devtools-audit) |
3332
| `$update-audit` | OS updates, outdated apps, drivers where visible, runtimes, package managers, and better replacement choices. | [open](https://skills.sh/jasperdevs/computer-doctor/update-audit) |
34-
| `$virus-scan` | Legacy alias for `$security-scan`. Prefer `$security-scan`, but this keeps older links and installs understandable. | [open](https://skills.sh/jasperdevs/computer-doctor/virus-scan) |
3533

3634
The canonical pack surface is tracked in [skills-pack.json](./skills-pack.json).
3735

skills-pack.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,5 @@
1818
"name": "update-audit",
1919
"path": "skills/update-audit"
2020
}
21-
],
22-
"aliases": [
23-
{
24-
"name": "virus-scan",
25-
"path": "skills/virus-scan",
26-
"deprecated": true,
27-
"replaced_by": "security-scan"
28-
}
2921
]
3022
}

skills/virus-scan/SKILL.md

Lines changed: 0 additions & 50 deletions
This file was deleted.

skills/virus-scan/agents/openai.yaml

Lines changed: 0 additions & 4 deletions
This file was deleted.

0 commit comments

Comments
 (0)