Skip to main content

NoDeskAI

Đọc bằng tiếng Việt

License: MIT Made in Vietnam Built on a phone

Your AI coding agent keeps guessing, over-engineering, and editing code outside the scope you asked for. NoDeskAI fixes that — in one command.

NoDeskAI is a skill-pack for AI coding agents (Claude Code, Cursor, Codex CLI, Windsurf...): install it once and your agent stops silently guessing at ambiguous requests, stops bloating simple tasks into over-engineered solutions, and stops touching code outside what you asked for. It ships with audit — a built-in scanner that checks the skill/rule files you're about to trust for bloat, duplicate rules, and prompt-injection patterns.

🇻🇳 Made in Vietnam. Every line of this project — writing, testing, committing, and pushing to GitHub — was done entirely on an Android phone through Termux. No PC, no laptop, no iPad.

asciicast

Install

pip install nodeskai

Usage

cd your-project
nodeskai init

This writes the full discipline ruleset into all 4 agent-config files (CLAUDE.md, .cursorrules, AGENTS.md, .windsurfrules) — creating whichever ones don't exist yet, and appending to any that already have content of your own (your existing content is kept, NoDeskAI's block is added below it). It also creates NODESKAI.md as the source of truth. Every file gets a metadata line (flags + version) at the top so sync knows how to update it later.

Optional modes

nodeskai init --strict            # extra guardrails for high-risk decisions
nodeskai init --fast              # relaxed rules for obviously trivial tasks
nodeskai init --product-context   # adds a product/team-context skill (missing from the original CLAUDE.md)

--strict and --fast can't be combined (they're opposite modes).

Update when a new skill version is available

nodeskai sync

Updates every file NoDeskAI manages (NODESKAI.md + installed agent-configs) to match the currently installed NoDeskAI version, keeping each file's own flags from init and preserving any hand-written content that came before the NoDeskAI block. Files with no NoDeskAI metadata (hand-written, never run through init) are reported as [SKIP] — they don't break the command.

Running init more than once

init is safe to re-run. Each time, NODESKAI.md is rebuilt fresh (a .bak copy of the previous version is kept alongside it). Agent-config files are not touched again once they already contain a NoDeskAI block — you'll see [SKIP] for those; use nodeskai sync instead to update them. Re-running init never duplicates content.

Global flags (work on every command)

--path <dir>     # target project (default: current directory)
--quiet, -q      # only print errors/warnings, hide [OK]/[SKIP] lines
--dry-run        # preview what would change, write/delete nothing
--lang vi|en     # output language (default: vi, or env var NODESKAI_LANG)

nodeskai --version prints the installed version.

A hard limit worth knowing

Everything above — init, sync, audit — is advisory. The rules written into CLAUDE.md/.cursorrules/etc. are text the agent reads; nothing forces it to comply, the same limit every prompt-based skill file has (including the original CLAUDE.md). There is no way to make an LLM follow markdown instructions the way a compiler enforces a type — that's not a gap NoDeskAI (or any similar tool) can close.

nodeskai enforce — the one thing that's actually enforced

nodeskai enforce

Installs a real Claude Code PreToolUse hook that blocks (not just suggests against) a short list of destructive bash commands (rm -rf /, git push --force, git reset --hard, chmod -R 777, fork bombs) before they run — this is a process-level gate, not a text suggestion.

Scope, stated plainly: this only covers Claude Code (the only tool confirmed to have a real blocking hook), and only exact bash-command patterns — not semantic rules like "don't guess" or "don't over-engineer," which no tool can mechanically enforce. Known limitation of Claude Code itself: a dispatched subagent can bypass the parent session's hooks (a Claude Code limitation, not something this hook can fix).

Uninstall

nodeskai remove

Asks for confirmation before deleting anything (skip the prompt with --yes; when run non-interactively — scripts, CI — it proceeds without asking, same as before). Removes NoDeskAI from the project: deletes NODESKAI.md, and strips the NoDeskAI block out of each agent-config file. If a file was entirely created by NoDeskAI (nothing written before the block), the whole file is deleted; if you had hand-written content before the block, that content is kept and only the NoDeskAI block is removed. A .bak copy of every changed file is kept in case you need to restore it. Files with no NoDeskAI metadata (never run through init) are left untouched.

Check installed skill/agent-config files

nodeskai audit

Scans every skill/agent-config file in the project for:

  • Bloat — files over 150 lines, where important rules risk getting buried.
  • Duplicate rules — a sign of rules being added over time without ever being cleaned up.
  • Suspicious patterns — prompt-injection attempts, destructive commands, data-exfiltration signs.

Current status

v0.6.0 — full command set (init/sync/audit/remove/enforce), --dry-run/--quiet/--lang/--version on every command, safe error handling for non-UTF-8 files and write failures, and a real Claude Code enforcement hook via enforce (the only part of NoDeskAI that isn't just advisory).

Support the project

If NoDeskAI is useful to you, you can support it through GitHub Sponsors (link coming soon) or Ko-fi.

License

MIT

Metadata

Release files for nodeskai 0.6.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nodeskai 0.6.3
File Size Uploaded
nodeskai-0.6.3.tar.gz 22.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nodeskai 0.6.3
File Interpreter ABI Platform
nodeskai-0.6.3-py3-none-any.whl Python 3 none any Details

Total release size: 42.3 kB

Release files / nodeskai-0.6.3.tar.gz

Download URL nodeskai-0.6.3.tar.gz
Size 22.6 kB
Tags Source
SHA-256 checksum
How to use checksums
028d743c6fee1be380c78c65e3ac90b11951edcef4a85c015afd96ca5b1db086
BLAKE2b-256 checksum
How to use checksums
ba7c4ea91e2471ec580e8524bce17ea46236efdf607db66eab81f3d6ad29e3cb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / nodeskai-0.6.3-py3-none-any.whl

Download URL nodeskai-0.6.3-py3-none-any.whl
Size 19.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
097bf3a2827b324b75a447edd03c6ad34ff49c57511329147428db0b65c91d08
BLAKE2b-256 checksum
How to use checksums
91e35108e71ce6c7ec63ad6fd31fa66c8ec85df41f4a34c97c62fc7db7ba66ee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

0.6.3 This release

2 release files

0.6.2

2 release files

0.4.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page