ship-485adc — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited ship-485adc (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Run local CI checks, then create branch, commit, push, and PR in one workflow.
Follow every step in order. Stop and report if any step fails.
Check if $ARGUMENTS is provided:
/ship 613 or /ship https://github.com/.../issues/613): gh issue view <number> --json title,body,labelsUse the issue title and labels to inform branch name, commit message, and PR description.
/ship):Skip issue fetch. Derive context entirely from the changed files and git diff. The user will be asked to confirm the commit message and PR title before proceeding.
git status
git diff --statIf there are no changes to ship, stop and inform the user.
Detect whether the project is a monorepo or single-repo by checking for configuration:
codingbuddy.config.jsonIf codingbuddy.config.json exists and contains custom.ship, use it:
// codingbuddy.config.json
{
"custom": {
"ship": {
"packageManager": "yarn", // "yarn" | "npm" | "pnpm" | "bun"
"structure": "monorepo", // "monorepo" | "single"
"workspaces": [
{
"name": "my-app",
"paths": ["apps/my-app/**"],
"checks": ["lint", "format:check", "typecheck", "test:coverage", "build"]
},
{
"name": "my-lib",
"paths": ["packages/my-lib/**"],
"checks": ["lint", "typecheck", "test"]
}
],
"globalChecks": [
{
"name": "schema-validation",
"command": "npx ajv-cli validate -s schema.json -d 'data/*.json'"
},
{
"name": "markdown-lint",
"command": "npx markdownlint-cli2 '**/*.md'"
}
],
"skipPaths": ["docs/**", "*.md", ".github/**"]
}
}
}If no custom.ship config exists, auto-detect:
bun.lock → pnpm-lock.yaml → yarn.lock → package-lock.json. Default to npm.package.json for workspaces field. If present → monorepo; otherwise → single-repo.workspaces from package.json, resolve glob patterns against git diff --name-only to find affected workspaces. <pm> [workspace <name>] lint
<pm> [workspace <name>] typecheck
<pm> [workspace <name>] test
<pm> [workspace <name>] buildWhere <pm> is the detected package manager and workspace <name> is included only for monorepos.
Run git diff --name-only (include both staged and unstaged) and classify into workspaces.
Monorepo: Match changed file paths against workspace paths patterns to find affected workspaces.
Single-repo: All changes belong to the single workspace.
If changed files match only skipPaths (or don't match any workspace in auto-detect), skip CI checks entirely and proceed to Step 6.
Run checks only for affected workspaces. Execute checks sequentially within each workspace. Stop at first failure.
Configured (from custom.ship.workspaces):
# For each affected workspace, run each check:
<pm> workspace <workspace-name> <check>Auto-detected:
# Monorepo — run for each affected workspace:
<pm> workspace <workspace-name> lint
<pm> workspace <workspace-name> typecheck
<pm> workspace <workspace-name> test
<pm> workspace <workspace-name> build
# Single-repo — run at project root:
<pm> run lint
<pm> run typecheck
<pm> run test
<pm> run buildSkip any script that does not exist in the workspace's package.json — check with <pm> run --json or by reading package.json scripts.
If custom.ship.globalChecks is configured, run each global check command after workspace checks pass:
<command> # executed from project rootSecurity audit must run across ALL workspaces, not just affected ones:
# Monorepo — run for ALL workspaces (not just affected):
<pm> audit
# Or for npm:
npm audit --workspacesWhy: A vulnerability in an unaffected workspace still ships with the project. Security scanning must be comprehensive.
When modifying CI workflow files (e.g., .github/workflows/*.yml), verify the workflow's on.push.paths or on.pull_request.paths filter includes the workflow file itself:
# ✅ Correct — workflow file is included in its own paths filter
on:
push:
paths:
- 'src/**'
- '.github/workflows/ci.yml' # Self-included
# ❌ Wrong — workflow changes won't trigger the workflow
on:
push:
paths:
- 'src/**'
# Missing: .github/workflows/ci.ymlWhy: If a workflow file is not in its own paths filter, changes to the workflow itself won't trigger CI, making it impossible to validate workflow changes before merging.
If ANY check fails, stop and report the failure. Do NOT proceed to shipping.
git log --oneline -10Identify the commit message convention from recent history. Common conventions:
type(scope): description (Conventional Commits)type: description<type>/<short-description>-<issue-number> (e.g., feat/add-auth-613)<type>/<short-description> (e.g., fix/login-redirect)git checkout -b <branch-name>
# Stage relevant files (never use git add -A)
git add <specific-files>
# Exclude task artifacts from staging
git reset HEAD RESULT.json TASK.md 2>/dev/null || true
# Commit with convention — use HEREDOC for message
git commit -m "$(cat <<'EOF'
type(scope): concise description
- Detail 1
- Detail 2
Closes #<issue-number> ← only if issue provided
EOF
)"Rules:
git add (never git add -A or git add .)Closes #<number> if an issue was providedgit push -u origin <branch-name>Create PR using gh pr create:
gh pr create --title "<type>(scope): description" --label "<labels>" --body "$(cat <<'EOF'
## Summary
<bullet points summarizing changes>
## Test plan
<verification steps>
Closes #<issue-number>
EOF
)"gh pr create --title "<type>(scope): description" --label "<labels>" --body "$(cat <<'EOF'
## Summary
<bullet points summarizing changes>
## Test plan
<verification steps>
EOF
)"enhancement for feat, bug for fix)PR Rules:
Print the PR URL and a summary of:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.