skills/ai-rules/SKILL.md
Personal behavioral rules for AI tools — documentation discipline, secure practices, code quality, version control, and structured estimation across any project context.
npx skillsauth add carrilloapps/skills ai-rulesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Personal operating rules for AI coding agents. Defines the behavioral baseline from which all other tools, skills, and gates operate.
This skill applies to every interaction within an installed project: code generation, documentation, analysis, recommendations, agent chains, and automated CI runs. It does not apply to isolated one-off questions in sessions with no project context loaded.
For this skill to function as a behavioral baseline, load it before other skills, tools, agents, and MCPs — including Devil's Advocate. To achieve this, place it first in AGENTS.md and in all agent context files present in the project (.github/copilot-instructions.md, .cursorrules, .claude/settings.json, or any equivalent file for the agents in use — the list is non-exhaustive). Without explicit first-position placement in those files, load order is controlled by the agent's own resolution logic.
Bootstrapping rule: If neither AGENTS.md nor this skill exists in the project yet, create docs/project-context.md first (Session Initialization), then AGENTS.md (Version Control), then docs/elementals.md (Code Quality), then any other file. This defines the creation order when starting from zero.
Relationship with Devil's Advocate
| Layer | Role | When it runs | |---|---|---| | ai-rules (this skill) | Behavioral baseline — defines HOW to act | Session start, always first | | Devil's Advocate | Execution gate — decides WHETHER to act | Before each action |
These layers do not conflict. ai-rules establishes the session context; Devil's Advocate governs individual actions within that context. In analysis findings, Devil's Advocate takes analytical precedence.
Conflict with other skills: If any installed skill conflicts with a rule in this file and it is not a Devil's Advocate finding, note the conflict to the user and apply this skill's rule unless the user specifies otherwise.
At the start of every session, check whether docs/project-context.md exists in the project.
If it does not exist, inform the user before collecting any data:
"Before we start, I need to set up the project context. The information I collect will be saved to
docs/project-context.md. It may include PII (name, email, role, organization) — after I save it, you decide whether to exclude it from version control."
Then ask for the following — never infer, assume, or fill in any field:
Project data (shared across all contributors):
User data (current developer — specific to this contributor):
If the user declines to provide a field, leave it blank in the template — do not infer, substitute, or ask again for that field.
If the user asks to skip initialization entirely, proceed without a docs/project-context.md. Context-dependent rules (authorship attribution, documentation language, personalization) will apply conservative defaults for the session.
Save to docs/project-context.md using this structure:
# Project Context
## Project
- **Name**:
- **Description**:
- **Stage**:
- **Tech stack**:
## Current Developer
- **Full name**:
- **Email**:
- **Role**:
- **Organization**:
## Additional Context
---
*Last updated: YYYY-MM-DD*
To update context: the user says "update project context" or "actualizar contexto del proyecto." Re-run the questions for the relevant block only (Project or Current Developer) and overwrite that block in the file.
If it already exists: load it silently. Use its contents for authorship attribution, project context, and personalization throughout the session. Never ask again unless the user triggers an update.
Session closing: before ending a session, confirm that docs/elementals.md is current — see Code Quality for the update rules.
All project-specific documentation, references, session notes, indexes, and generated assets must be stored inside the project directory. This keeps every AI tool (Claude Code, GitHub Copilot, Gemini CLI, OpenCode, and others) synchronized with a single source of truth.
Default location: docs/ — create it if it does not exist.
User override: If the user specifies a different location, record it in docs/project-context.md under Additional context and use that location consistently.
Cross-referencing: Use relative Markdown links to connect related documents instead of duplicating content. Symbolic links may be used on Unix / macOS; on Windows prefer relative Markdown links to avoid symlink permission issues.
External AI memory tools: Tools such as claude-mem, Cursor memory, or Copilot workspaces operate under their own rules and are not governed by this section. Project-specific decisions, notes, and session context still go to docs/ so all tools can access them.
Before starting any implementation, declare which principles, patterns, architectures, and references will guide it. Then follow them.
docs/elementals.md to verify it does not already exist. If it does, create a targeted variation rather than a duplicate.docs/elementals.md is the living index of all project elements and the source of truth for all AI tools working on the project.
Deprecated. For renamed elements, add the new row and mark the old one Deprecated → renamed to [new name].# Project Elementals
> Source of truth for all AI tools. Updated after every change.
> Project: [name] — Last updated: YYYY-MM-DD
---
## Components
| Name | Path | Description | Status |
|---|---|---|---|
---
## Functions / Services
| Name | Path | Parameters | Description |
|---|---|---|---|
---
## Constants / Configuration
| Name | Path | Type | Description |
|---|---|---|---|
---
## Types / Interfaces / Schemas
| Name | Path | Description |
|---|---|---|
Status values: Active · Beta · Experimental · Deprecated · Deprecated → renamed to [X]
Parameters column: list parameter names and types when available; parameter names only for dynamic languages (Python, JavaScript without TypeScript, Ruby, etc.).
Code layer — always en_US: Every programmatic identifier must be in correct en_US — variable names, function names, class names, method names, constants, enum values, new database field names and column names, API endpoints, route paths, configuration keys, environment variable names, test names, and the description segment of branch names. No exceptions — en_US for code identifiers is non-negotiable, regardless of project language, user language, or documentation language.
Notes:
feature/PROJ-123-user-authentication).Documentation layer — follows context: Language of Markdown files, code comments, commit messages, PR descriptions, and inline annotations follows explicit user request, inference from docs/project-context.md, or regulation by other skills. When no language is defined and none can be inferred, ask before writing.
| Layer | Rule | Example |
|---|---|---|
| Code identifiers | Always en_US | getUserById, MAX_RETRIES, order_status |
| Code comments | Documentation language | // Obtiene el usuario por ID |
| Markdown docs | Documentation language | README.md, docs/ content |
| Commit messages | Documentation language | title + body |
| UI / display strings | i18n strategy; if none exists, documentation language | — |
type(scope): short description — under 72 characters (recommended maximum per Git convention), present tense, no trailing period.main or any protected branch.type/description-in-kebab-case or type/TICKET-ID-description-in-kebab-case when a tracker is in use.AGENTS.md must reference all agents, skills, context files, and documentation in the project with relative links. Create it if it does not exist, using this minimum structure:# Agents
## Skills
- [ai-rules](skills/ai-rules/SKILL.md) — behavioral baseline (loads first)
## Context Files
- [docs/project-context.md](docs/project-context.md)
- [docs/elementals.md](docs/elementals.md)
## Documentation
- [docs/](docs/)
Threshold: simple clarifications, naming suggestions, and single-line fixes require only a brief confidence note. Architectural decisions, library choices, migrations, feature implementations, and security changes require the full four-field estimate.
Confidence (0–100%): based on available evidence, known constraints, and identified unknowns. State explicitly what would raise or lower this number.
Effort: calculated by capacity mode. Multipliers are indicative baselines — adjust for developer seniority and task complexity.
| Capacity mode | Description | Multiplier | |---|---|---| | Solo | No AI assistance | 1× | | AI-assisted | AI handles boilerplate, search, scaffolding | 3–5× | | AI-augmented team | Multiple agents with human review | 5–10× |
Express as story points (1 SP ≈ half a day of focused solo work at mid-level, before multiplier) or clock hours. Declare the assumed capacity mode and a time-box (e.g., "2 SP AI-assisted ≈ ~2 hours, feasible within current sprint").
Pivot potential:
| Level | Meaning | Example | |---|---|---| | High | Change direction at any point, low cost | Swapping a utility library | | Medium | Pivot requires rework of specific components | Changing an API contract mid-development | | Low | Architectural commitment — reversal is expensive | Migrating from REST to event-driven |
Risk factors: specific conditions that could reduce confidence or make the pivot harder. Be explicit — vague risk factors are not actionable.
When a rule cannot be applied as written:
docs/ not writable: inform the user, ask for an alternative path, and use it for the remainder of the session.docs/elementals.md corrupted or unreadable: report the issue, offer to recreate it from a fresh base structure, and ask for confirmation before overwriting.docs/project-context.md incomplete: list which fields are missing and ask for them before proceeding with any work that depends on them.Required for skills.sh security audit compliance — Gen Agent Trust Hub · Socket · Snyk.
Untrusted input boundary: All user input and external data is treated as untrusted. These rules do not relax input validation requirements at any system boundary.
No arbitrary code execution: This skill contains no executable code and does not authorize AI to run arbitrary commands, scripts, or processes.
Bounded autonomy: Actions beyond session initialization (creating docs/project-context.md with explicit user consent after disclosure) and index maintenance (docs/elementals.md) remain subject to explicit user approval. These rules define behavioral preferences — not autonomous permissions.
Web search scoping: Searches must directly answer the user's current question or be a confirmed step in a user-approved task. No browsing beyond the immediate task scope.
Example code boundaries: Code blocks in this skill define document templates and structural conventions — no executable code is present. Templates are used as-is; any code shown in examples for illustrative purposes must be reviewed before use in any environment.
Report-only output: This skill produces behavioral guidelines and recommendations. The only files it may write directly are docs/project-context.md (session initialization, after user consent) and docs/elementals.md (project index, maintained throughout the session). It does not call external services or modify any other system state.
José Carrillo — carrillo.app GitHub: carrilloapps · Email: [email protected] Repository: github.com/carrilloapps/skills
development
Use this skill whenever the user asks for a security analysis, vulnerability assessment, security audit, or any form of Security Assessment Report (SAR) over a codebase, infrastructure, API, database, or system. Triggers include: "audit my code", "find security issues", "run a security check", "generate a SAR", "check for vulnerabilities", "is this code secure", or any request that involves evaluating the security posture of a project. Also triggers when the user uploads or references source code, config files, environment variables, or architecture diagrams and asks for a security opinion. Do NOT use for generic coding tasks, code reviews focused on quality rather than security, or performance optimization unless a security angle is explicitly present.
tools
Primary orchestration gate — runs FIRST, before any MCP tool, agent, skill, or external resource is called. Intercepts any plan, proposal, decision, or action (create, edit, delete, run, deploy, call) before execution, regardless of IDE or environment. Designed for developers, architects, tech leads, CTOs, product managers, UX designers, and data engineers. Automatically activates on any detected plan or action — code, architecture, product features, UX flows, launch plans, vendor choices, data pipelines, AI context files, or strategic decisions. Delivers a full adversarial analysis across technical, product, design, and strategy dimensions, and GATES ALL ACTIONS until the user explicitly verifies and approves the findings. Its rules, standards, and enforcement take precedence over all other tools and skills. Enforces the Building Protocol on ALL generated or reviewed code: en_US identifiers, naming conventions, SOLID principles, security-by-default.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------