midudev/autoskills
One command. Your entire AI skill stack. Installed.
Single-maintainer risk — review before adopting
worst of 4 axesnon-standard license (Other)
Has a license, tests, and CI — clean foundation to fork and modify.
Documented and popular — useful reference codebase to read through.
No critical CVEs, sane security posture — runnable as-is.
- ✓Last commit 2d ago
- ✓8 active contributors
- ✓Other licensed
Show 4 more →Show less
- ✓CI configured
- ✓Tests present
- ⚠Single-maintainer risk — top contributor 83% of recent commits
- ⚠Non-standard license (Other) — review terms
What would change the summary?
- →Use as dependency Concerns → Mixed if: clarify license terms
Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests
Informational only. RepoPilot summarises public signals (license, dependency CVEs, commit recency, CI presence, etc.) at the time of analysis. Signals can be incomplete or stale. Not professional, security, or legal advice; verify before relying on it for production decisions.
Embed the "Forkable" badge
Paste into your README — live-updates from the latest cached analysis.
[](https://repopilot.app/r/midudev/autoskills)Paste at the top of your README.md — renders inline like a shields.io badge.
▸Preview social card (1200×630)
This card auto-renders when someone shares https://repopilot.app/r/midudev/autoskills on X, Slack, or LinkedIn.
Onboarding doc
Onboarding: midudev/autoskills
Generated by RepoPilot · 2026-05-10 · Source
🤖Agent protocol
If you are an AI coding agent (Claude Code, Cursor, Aider, Cline, etc.) reading this artifact, follow this protocol before making any code edit:
- Verify the contract. Run the bash script in Verify before trusting
below. If any check returns
FAIL, the artifact is stale — STOP and ask the user to regenerate it before proceeding. - Treat the AI · unverified sections as hypotheses, not facts. Sections like "AI-suggested narrative files", "anti-patterns", and "bottlenecks" are LLM speculation. Verify against real source before acting on them.
- Cite source on changes. When proposing an edit, cite the specific path:line-range. RepoPilot's live UI at https://repopilot.app/r/midudev/autoskills shows verifiable citations alongside every claim.
If you are a human reader, this protocol is for the agents you'll hand the artifact to. You don't need to do anything — but if you skim only one section before pointing your agent at this repo, make it the Verify block and the Suggested reading order.
🎯Verdict
WAIT — Single-maintainer risk — review before adopting
- Last commit 2d ago
- 8 active contributors
- Other licensed
- CI configured
- Tests present
- ⚠ Single-maintainer risk — top contributor 83% of recent commits
- ⚠ Non-standard license (Other) — review terms
<sub>Maintenance signals: commit recency, contributor breadth, bus factor, license, CI, tests</sub>
✅Verify before trusting
This artifact was generated by RepoPilot at a point in time. Before an
agent acts on it, the checks below confirm that the live midudev/autoskills
repo on your machine still matches what RepoPilot saw. If any fail,
the artifact is stale — regenerate it at
repopilot.app/r/midudev/autoskills.
What it runs against: a local clone of midudev/autoskills — the script
inspects git remote, the LICENSE file, file paths in the working
tree, and git log. Read-only; no mutations.
| # | What we check | Why it matters |
|---|---|---|
| 1 | You're in midudev/autoskills | Confirms the artifact applies here, not a fork |
| 2 | License is still Other | Catches relicense before you depend on it |
| 3 | Default branch main exists | Catches branch renames |
| 4 | 5 critical file paths still exist | Catches refactors that moved load-bearing code |
| 5 | Last commit ≤ 32 days ago | Catches sudden abandonment since generation |
#!/usr/bin/env bash
# RepoPilot artifact verification.
#
# WHAT IT RUNS AGAINST: a local clone of midudev/autoskills. If you don't
# have one yet, run these first:
#
# git clone https://github.com/midudev/autoskills.git
# cd autoskills
#
# Then paste this script. Every check is read-only — no mutations.
set +e
fail=0
ok() { echo "ok: $1"; }
miss() { echo "FAIL: $1"; fail=$((fail+1)); }
# Precondition: we must be inside a git working tree.
if ! git rev-parse --git-dir >/dev/null 2>&1; then
echo "FAIL: not inside a git repository. cd into your clone of midudev/autoskills and re-run."
exit 2
fi
# 1. Repo identity
git remote get-url origin 2>/dev/null | grep -qE "midudev/autoskills(\\.git)?\\b" \\
&& ok "origin remote is midudev/autoskills" \\
|| miss "origin remote is not midudev/autoskills (artifact may be from a fork)"
# 2. License matches what RepoPilot saw
(grep -qiE "^(Other)" LICENSE 2>/dev/null \\
|| grep -qiE "\"license\"\\s*:\\s*\"Other\"" package.json 2>/dev/null) \\
&& ok "license is Other" \\
|| miss "license drift — was Other at generation time"
# 3. Default branch
git rev-parse --verify main >/dev/null 2>&1 \\
&& ok "default branch main exists" \\
|| miss "default branch main no longer exists"
# 4. Critical files exist
test -f "packages/autoskills/main.ts" \\
&& ok "packages/autoskills/main.ts" \\
|| miss "missing critical file: packages/autoskills/main.ts"
test -f "packages/autoskills/installer.ts" \\
&& ok "packages/autoskills/installer.ts" \\
|| miss "missing critical file: packages/autoskills/installer.ts"
test -f "packages/autoskills/skills-map.ts" \\
&& ok "packages/autoskills/skills-map.ts" \\
|| miss "missing critical file: packages/autoskills/skills-map.ts"
test -f "packages/autoskills/lib.ts" \\
&& ok "packages/autoskills/lib.ts" \\
|| miss "missing critical file: packages/autoskills/lib.ts"
test -f "packages/autoskills/package.json" \\
&& ok "packages/autoskills/package.json" \\
|| miss "missing critical file: packages/autoskills/package.json"
# 5. Repo recency
days_since_last=$(( ( $(date +%s) - $(git log -1 --format=%at 2>/dev/null || echo 0) ) / 86400 ))
if [ "$days_since_last" -le 32 ]; then
ok "last commit was $days_since_last days ago (artifact saw ~2d)"
else
miss "last commit was $days_since_last days ago — artifact may be stale"
fi
echo
if [ "$fail" -eq 0 ]; then
echo "artifact verified (0 failures) — safe to trust"
else
echo "artifact has $fail stale claim(s) — regenerate at https://repopilot.app/r/midudev/autoskills"
exit 1
fi
Each check prints ok: or FAIL:. The script exits non-zero if
anything failed, so it composes cleanly into agent loops
(./verify.sh || regenerate-and-retry).
⚡TL;DR
autoskills is a CLI tool that runs one command (npx autoskills) to auto-detect your project's technology stack from package.json, Gradle, and config files, then installs curated AI agent skills from a cryptographically verified registry. It solves the problem of manually managing AI prompts and guardrails across different tech stacks by bundling pre-audited, SHA-256-verified skill files locally without runtime third-party downloads. Monorepo using pnpm: packages/autoskills/ contains the CLI engine (main.ts, installer.ts, index.mjs, lib.ts), .codex/skills/ holds the audited skill definitions organized by domain (accessibility, frontend-design, nodejs-backend-patterns, etc.), and the root hosts the marketing site (Astro + Tailwind). Skills are versioned with lock manifests (skills-lock.json) and validated before installation.
👥Who it's for
Full-stack developers and teams using modern frameworks (React, Vue, Next.js, Node.js, etc.) who want to enhance their development workflow with AI agents but need security guarantees—they can't use random downloaded prompts, and don't want to manually configure skills per project.
🌱Maturity & risk
Early-stage but actively maintained: the repo shows recent development across multiple packages (TypeScript/Ruby skills, Astro website), has structured CI/CD workflows (.github/workflows/), and proper release tooling (scripts/release.mjs). The project is audited for supply-chain security and versioned (v0.0.1), but single-package nature and small codebase suggest it's still growing toward 1.0 stability rather than production-battle-tested.
Low risk for a young tool: the security model deliberately avoids live third-party downloads (skills are synced offline into the repo), SHA-256 manifest verification is built-in, and there's explicit supply-chain scanning (scripts/validate-registry.mjs). Main risk is single maintainer (midudev) and rapid iteration may introduce breaking changes; also Node.js >= 22 requirement is quite strict.
Active areas of work
The project is in active feature expansion: skill detection logic is being refined (supported techs list is extensive), the registry sync pipeline is being developed (scripts/sync-skills.mjs, validate-registry.mjs), and the web presence is being built (Astro site with OG image generation). CI workflows handle compatibility testing and automated labeling of issues.
🚀Get running
git clone https://github.com/midudev/autoskills.git
cd autoskills
pnpm install
pnpm run dev # Starts Astro dev server for the website
To test the CLI in development: cd packages/autoskills && node index.mjs
Daily commands:
# Website (Astro):
cd . && pnpm run dev
# CLI (development):
cd packages/autoskills && node index.mjs
# Full build:
pnpm run build
🗺️Map of the codebase
packages/autoskills/main.ts— Entry point that orchestrates the core flow: tech stack detection, skill matching, downloading, verification, and installation.packages/autoskills/installer.ts— Handles skill file downloads from registry, SHA-256 verification against manifest, and local filesystem writes—critical for security model.packages/autoskills/skills-map.ts— Maps detected technologies to available skills; essential for determining which skills get installed for any given project.packages/autoskills/lib.ts— Core utilities for tech stack detection (package.json, Gradle, config file scanning) and file I/O.packages/autoskills/package.json— Declares autoskills as an executable CLI tool and defines all runtime dependencies.packages/autoskills/skills-registry— Local registry containing all audited skill definitions, references, and agents; synced by maintainers and verified at install time.README.md— Documents the security model (local registry verification, SHA-256 manifest) and the three-step happy path flow that defines the entire tool.
🧩Components & responsibilities
- lib.ts (Tech Detection) (Node.js fs module, JSON parsing) — Reads project files and infers which technologies are in use.
🛠️How to make changes
Add a new AI skill to the registry
- Create a new directory under packages/autoskills/skills-registry/{skill-name} (
packages/autoskills/skills-registry) - Add a SKILL.md file describing the skill, its purpose, and use cases (
packages/autoskills/skills-registry/{skill-name}/SKILL.md) - Create a references/ subdirectory with markdown files documenting patterns and best practices (
packages/autoskills/skills-registry/{skill-name}/references) - Add an agents/openai.yaml file configuring the AI agent behavior for this skill (
packages/autoskills/skills-registry/{skill-name}/agents/openai.yaml) - Update packages/autoskills/skills-map.ts to map relevant technologies to your new skill (
packages/autoskills/skills-map.ts) - Run packages/autoskills/scripts/validate-registry.mjs to verify skill integrity and security (
packages/autoskills/scripts/validate-registry.mjs)
Add support for detecting a new technology
- Add detection logic in packages/autoskills/lib.ts to scan for the technology (e.g., check for config files or dependency entries) (
packages/autoskills/lib.ts) - Add a technology identifier and update the detection return type in lib.ts (
packages/autoskills/lib.ts) - Map the new technology to relevant skills in packages/autoskills/skills-map.ts (
packages/autoskills/skills-map.ts) - Test the detection by running npx autoskills in a project with that technology (
packages/autoskills/main.ts)
Customize CLI output and user feedback
- Use packages/autoskills/colors.ts utilities to add colored console output (
packages/autoskills/colors.ts) - Update packages/autoskills/main.ts to add logging or progress indicators at key steps (
packages/autoskills/main.ts) - Format messages using helper functions from colors.ts for consistent styling (
packages/autoskills/colors.ts)
🔧Why these technologies
- TypeScript — Provides type safety for the core orchestration logic that coordinates detection, matching, and installation flows; reduces bugs in security-critical verification code.
- Node.js / npm CLI — Enables zero-installation distribution as a single command (npx autoskills); natural fit for scanning package.json and project config files.
- SHA-256 Verification — Implements the security model: every skill file is hashed in the manifest and verified before writing to prevent supply-chain attacks.
- Local Registry (filesystem-based) — Skills are synced and audited by maintainers before being stored in-repo; eliminates runtime dependency on external repositories.
- Claude API (claude.ts) — Provides AI-driven skill recommendations and content generation to enhance skill relevance matching beyond simple tech detection.
⚖️Trade-offs already made
-
Local registry with maintainer-driven syncing instead of runtime package resolution
- Why: Ensures all skills are audited for prompt injection and supply-chain risks before users ever receive them; provides reproducible installs.
- Consequence: Slower skill additions (manual sync required); registry grows with repo. Mitigated by curating only high-quality skills.
-
No configuration required; auto-detection only
- Why: Maximizes ease of use (one command) and reduces user error.
- Consequence: Detection heuristics may miss niche technologies or custom setups; users cannot override matches. Addressed by detecting most popular tech stacks.
-
Download and verify all matched skills; no caching
- Why: Ensures fresh skill content on every run and guarantees manifest verification always occurs.
- Consequence: Slower subsequent runs; increased network traffic. Acceptable because autoskills is typically run once per project.
🚫Non-goals (don't propose these)
- Does not provide runtime skill execution; only installs skill files for local use by the user's AI agent.
- Does not auto-update installed skills; users manage skill updates manually.
- Does not support private/corporate skill registries; registry is public and maintained by autoskills team.
- Does not handle authentication or API key management for AI services; assumes user has configured their own LLM client.
- Not a monorepo tool; designed for single-project usage.
🪤Traps & gotchas
- Node.js version lock: Requires Node.js >= 22 (see root package.json engines field); older LTS versions will fail silently. 2. pnpm workspace structure: Some build steps may fail if run from package subdir without pnpm workspace context; always run from root. 3. Skills registry sync: Running scripts/sync-skills.mjs requires the .codex/ directory structure to exist and be properly formatted (no validation docs visible for skill file format). 4. No local skill override: Once skills-lock.json is written, the CLI won't re-detect or update unless deleted (version pinning is strict). 5. Git hooks pre-commit: oxfmt is required for commits; if not installed, pre-commit hook may block pushes (.githooks/pre-commit exists but format not shown).
🏗️Architecture
💡Concepts to learn
- Supply-chain verification via manifest hashing — autoskills downloads skill files offline and verifies them against SHA-256 hashes in a lock manifest before writing; understanding this prevents prompt-injection attacks and ensures reproducible skill installations.
- Tech-stack auto-detection via config parsing — The CLI scans package.json, Gradle, and config files to infer the project's technology without user input; this is the core feature that makes autoskills 'one command'.
- Curated registry pattern — Skills are synced by maintainers into the repo's .codex/ folder and audited before users access them, avoiding the security risks of live third-party downloads at runtime.
- Monorepo with pnpm workspaces — autoskills uses pnpm workspaces (packages/autoskills, root website) to manage multiple packages with shared dependencies; understanding this is needed to modify build scripts or add new packages.
- Prompt injection and AI safety scanning — Scripts like validate-registry.mjs exist to audit skill files for injection risks before they're installable; this is critical for a tool that distributes AI prompts to developers.
- Lock files for reproducible installations — skills-lock.json records which skills were installed, their source, and content hash; this prevents silent updates and ensures reproducibility across team members and CI/CD runs.
- Git hooks for pre-commit enforcement — .githooks/pre-commit enforces oxfmt formatting before commits; understanding this prevents CI rejections and ensures code style consistency in PRs.
🔗Related repos
vercel/ai— Provides the SDK and patterns for building AI-powered agents that autoskills' curated prompts integrate with; listed as a supported technology.shadcn/ui— A curated component registry model that autoskills mirrors—pre-audited, locally copied components rather than live CDN; same security/reliability philosophy.biomejs/biome— Sibling tool in the Rust-based linting ecosystem (oxlint/oxfmt used throughout autoskills); auto-detection and zero-config philosophy align.nrwl/nx— Monorepo orchestration with tech-stack-aware code generation; autoskills extends this pattern to AI skill provisioning across diverse stacks.cognitive-arch/prompts— Community-driven prompt library (if it exists); represents the problem space autoskills solves by curating and versioning prompts safely.
🪄PR ideas
To work on one of these in Claude Code or Cursor, paste:
Implement the "<title>" PR idea from CLAUDE.md, working through the checklist as the task list.
Add unit tests for skill detection and installation in packages/autoskills/
The core logic in packages/autoskills/installer.ts, packages/autoskills/lib.ts, and packages/autoskills/main.ts handles tech stack detection and skill installation but lacks visible test coverage. Given this is a security-critical tool that scans projects and installs skills, unit tests would validate detection accuracy, prevent regressions, and build confidence in the supply chain.
- [ ] Create packages/autoskills/tests/ directory
- [ ] Add tests for packages/autoskills/lib.ts (tech stack detection logic)
- [ ] Add tests for packages/autoskills/installer.ts (skill file verification and writing)
- [ ] Add integration test mocking a sample project.json/package.json to verify correct skill selection
- [ ] Integrate test runner into ci.yml GitHub Actions workflow
Add GitHub Action for validating skill registry integrity in skills-registry/
The repo mentions S[ecurity model] and skill verification in the README, with a script at packages/autoskills/scripts/validate-registry.mjs, but there's no automated CI workflow that runs on PRs to validate new skills added to packages/autoskills/skills-registry/. This should run linting, security checks, and structural validation before merging.
- [ ] Create .github/workflows/skill-validation.yml
- [ ] Run packages/autoskills/scripts/validate-registry.mjs on pull requests
- [ ] Add step to scan SKILL.md files for prompt injection patterns (regex-based heuristics)
- [ ] Validate all references/ subdirectories are properly documented
- [ ] Report results as PR checks to block merges if validation fails
Add E2E test workflow for npx autoskills command in test environments
The main entry point is 'npx autoskills' but there's no visible end-to-end test that validates the full flow: detecting a tech stack, selecting appropriate skills, and installing them into a test project. This would catch breaking changes in installer.ts, skills-map.ts, or skill-registry modifications.
- [ ] Create .github/workflows/e2e-install.yml
- [ ] Set up matrix of test scenarios: Node.js-only, Node.js+TypeScript, Node.js+accessibility skills, etc.
- [ ] Create temporary test projects in workflow with various package.json configurations
- [ ] Run 'npx autoskills' against each test project
- [ ] Verify expected .codex/skills/ directories and files are created
- [ ] Validate downloaded skill files against packages/autoskills/skills-registry checksums
🌿Good first issues
- Add unit tests for packages/autoskills/lib.ts: tech detection logic for package.json parsing, Gradle file scanning, and technology-to-skill mapping is currently untested. Create a test/lib.test.ts file with cases for Next.js, Astro, Spring Boot, and Dart projects.
- Document the skill file format in packages/autoskills/.codex/skills/README.md or CONTRIBUTING.md: no specification exists for what a valid .md skill definition should contain (frontmatter, structure, metadata). New contributors cannot author skills without reverse-engineering from examples.
- Implement --list-skills flag to show available skills for a detected stack without installing: currently there's only --dry-run; adding a lightweight listing would help users preview what would be installed and understand the skill categories better.
⭐Top contributors
Click to expand
Top contributors
- @midudev — 83 commits
- @dependabot[bot] — 10 commits
- @aixegorri — 2 commits
- @Victor1890 — 1 commits
- @Jannael — 1 commits
📝Recent commits
Click to expand
Recent commits
0ed8477— Merge pull request #120 from midudev/dependabot/npm_and_yarn/oxfmt-0.47.0 (midudev)f6f9fb7— chore(deps): bump oxfmt from 0.46.0 to 0.48.0 (dependabot[bot])994c7c3— chore(deps): update astro to version 6.2.2 and adjust related dependencies (midudev)2d7eb81— Merge pull request #125 from aixegorri/add-more-tech-icons (midudev)1906db9— fix(icons): unbreak Angular icon and add C# (aixegorri)53f2705— feat(icons): add logos for 26 supported technologies (aixegorri)b3cf99c— Merge pull request #121 from midudev/dependabot/npm_and_yarn/oxlint-1.62.0 (midudev)eb97247— Merge pull request #122 from midudev/dependabot/npm_and_yarn/astro-6.2.1 (midudev)09c0010— release: v0.3.6 (midudev)8477028— fix(autoskills): normalize registry paths for downloads (midudev)
🔒Security observations
The autoskills codebase demonstrates a strong security posture with established security policies, private vulnerability reporting procedures, and a thoughtful approach to managing AI skill downloads through a curated registry. Primary concerns are minor: ensuring Node.js version constraints are necessary, considering relaxed version pinning for dev dependencies to receive security patches, and enhancing documentation around the skills verification mechanism. The project's security model of locally syncing and scanning skills before use is commendable. No critical vulnerabilities detected in the provided materials.
- Low · Node.js Version Constraint —
package.json - engines field. The package.json specifies Node.js >=22.12.0, which is a very recent version requirement. While this can be intentional for security, it may limit accessibility and CI/CD compatibility. Ensure this is a deliberate choice. Fix: Review if Node.js 22.12.0+ is truly necessary. Consider lowering the minimum version to a stable LTS release (e.g., 20.x) unless there are specific security or feature requirements. - Low · Dependency Pinning - oxfmt and oxlint —
package.json - devDependencies. Development tools (oxfmt v0.48.0, oxlint v1.62.0) are pinned to exact versions. While this ensures reproducibility, it may miss critical security patches if new versions address vulnerabilities. Fix: Consider using caret (^) ranges for dev dependencies to allow patch and minor updates: '^0.48.0' and '^1.62.0'. Ensure CI/CD includes dependency security scanning. - Low · Potential Supply Chain Risk in Skills Registry —
packages/autoskills/installer.ts, packages/autoskills/skills-registry/. The project downloads AI skills from a registry at runtime. Although the README mentions that skills are scanned for prompt-injection and supply-chain risks, the specific verification mechanism is not detailed in the provided files. Fix: Ensure cryptographic signatures (e.g., HMAC-SHA256) are used to verify downloaded skills. Implement Content Security Policy (CSP) headers if serving via web. Document the full security audit process for skills. - Low · Missing .env.example or Documentation on Secrets —
Root directory / packages/autoskills/. No .env.example file is present in the file structure to document required environment variables or secrets. This could lead to developers committing secrets accidentally. Fix: Create a .env.example file documenting all required environment variables. Add a pre-commit hook to prevent .env files from being committed (already present in .githooks/pre-commit).
LLM-derived; treat as a starting point, not a security audit.
👉Where to read next
- Open issues — current backlog
- Recent PRs — what's actively shipping
- Source on GitHub
Generated by RepoPilot. Verdict based on maintenance signals — see the live page for receipts. Re-run on a new commit to refresh.