Agent skill

Dot Scout

by robocode-dev in robocode-dev/tank-royale

Analyse a project to detect which principles apply and create or update .principles files encoding that analysis.

MITAuto-check: notesData & Analytics

Install Dot Scout

skills CLI
$ npx skills add robocode-dev/tank-royale --skill dot-scout -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install robocode-dev/tank-royale dot-scout --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/robocode-dev/tank-royale.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/dot-scout .claude/skills/dot-scout && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
dot-scout
GitHub stars
269
Token cost
~3.9k tokens
SKILL.md length
1,719 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
MIT

At a glance

Analyse a project to detect which principles apply and create or update .principles files encoding that analysis.

  • Works in 6 steps: Resolve Target and Check the Catalog → Detect Profile → Propose Placements and Confirm → …
  • The user runs /dot-scout [path] to map principles to a codebase
  • SKILL.md covers Phase 1 - Resolve Target and…, Phase 2 - Detect Profile, Phase 3 - Propose Placements… and Phase 4 - Check Existing…, plus 2 more sections
  • Calls bash

What it does

Dot Scout is an agent skill from robocode-dev/tank-royale. Analyse a project to detect which principles apply and create or update .principles files encoding that analysis. Use when the user runs /dot-scout [path] to map principles to a codebase.

Its SKILL.md is about 3.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Data & Analytics. It works with C#, Java, Python and Git. The repository describes itself as: Git repository for Robocode Tank Royale. The licence is MIT.

When your agent uses it

  • The user runs /dot-scout [path] to map principles to a codebase

Example prompts

  • “/dot-scout”

Requirements

  • Python 3
  • Docker
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Resolve Target and Check the Catalog
  2. Detect Profile
  3. Propose Placements and Confirm
  4. Check Existing .principles Files
  5. Write Files and Report
  6. Emit Generated Files

What it can do on your machine

Read from SKILL.md and the folder at commit 5000c67. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Dot Scout loads about 3.9k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 1,719 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~49
When it runs · the whole SKILL.md, loaded when a task matches
~3.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:89
    | `.env`, `application.yaml`, `appsettings.json`, `*.properties` | config | `@config` |
  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from robocode-dev/tank-royale at commit 5000c67, republished under its MIT licence (© robocode-dev). 1,719 words, ~3,855 tokens.

Download SKILL.mdSave it as .claude/skills/dot-scout/SKILL.md (or your agent's skills folder).
name
dot-scout
description
Analyse a project to detect which principles apply and create or update .principles files encoding that analysis. Use when the user runs /dot-scout [path] to map principles to a codebase.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash
argument-hint
[directory-path] | --explain <path> | --yes
version
0.15.0
authors
Flemming N. Larsen (https://github.com/flemming-n-larsen)
license
MIT
generated-by
.principles v0.15.0

Scout

You are analyzing a project to determine which principles apply, creating or updating .principles files to encode that, and generating the review files agents use. Judgement (profiling, placement) is yours; everything mechanical is done by scripts in .agents/principles-catalog/bin/. Follow these six phases exactly.

Shortcuts (check $ARGUMENTS first):

  • --explain <path>: run bash .agents/principles-catalog/bin/resolve.sh --format explain <path>, show the output (the active principles for that path and which .principles file added, excluded, locked or waived each one), and stop.
  • --yes: skip the confirmation question in Phase 3 and write the proposal as shown. Everything else is unchanged.

Phase 1 - Resolve Target and Check the Catalog

Determine the target directory:

  • If $ARGUMENTS is a directory path: use it as the target.
  • If $ARGUMENTS is empty (or only --yes): use the current working directory.
  • If $ARGUMENTS is a file path: use its containing directory.

Confirm the target exists. If not, report an error and stop.

Walk up from the target to find the git root (directory containing .git/). Record both the target directory and the git root - the hierarchy spans between them.

1.1 - Check the Catalog

Check that .agents/principles-catalog/index.tsv and .agents/principles-catalog/bin/emit.sh exist at the git root.

If either is missing, stop and report:

"⚠️ .agents/principles-catalog/ is missing or out of date. From your dot-principles checkout, run ./install.sh vendor <git-root> and then re-run /dot-scout."

Do not search the file system for install.sh.

1.2 - Load Scout Extensions

Glob .agents/principles-catalog/principles/*/.context-scout.md. Only extra catalogs ship these. For each file found, read it and record the detection rules it defines: { namespace → [detection rules] }. They supplement Phase 2. If there are none, use the built-in detection only.

Phase 2 - Detect Profile

Analyse the target directory (and subdirectories) to build a profile per directory. For each directory, detect:

Code artifact signals
SignalLanguage / Framework
*.java, pom.xml, build.gradleJava
*.ts, tsconfig.jsonTypeScript
*.py, pyproject.toml, requirements.txtPython
*.go, go.modGo
*.cs, *.csproj, *.slnC#
*.rs, Cargo.tomlRust
*.rb, GemfileRuby
*.php, composer.jsonPHP
@SpringBootApplication, spring-boot in build fileSpring Boot
@Entity, spring-data-jpa dependencySpring Data JPA
react, jsx, tsx importsReact
@NgModule, @ComponentAngular
django in requirementsDjango
fastapi importFastAPI
express in package.jsonExpress
Domain signals (for code artifact type)
SignalDomain
payment, billing, invoice, stripe, checkoutFinancial
auth, login, oauth, jwt, sessionAuthentication
user, profile, email, address, PIIPersonal data
microservice, service-mesh, sagaDistributed systems
Non-code artifact type signals
Directory / filesArtifact typeGroup
docs/, *.md files (README, DESIGN, ADR, CONTRIBUTING)docs@docs
.github/workflows/, Jenkinsfile, *.gitlab-ci.yml, azure-pipelines.ymlpipeline@pipeline
*.tf, *.tfvars, Dockerfile, docker-compose.*, Chart.yaml, k8s/, infra/, terraform/infra@infra
*.proto, *.graphql, openapi.yaml, swagger.yaml, schema.sqlschema@schema
.env, application.yaml, appsettings.json, *.propertiesconfig@config
Extension-based detection

After applying the built-in signals above, apply any detection rules loaded in Phase 1.2. For each rule:

  • Check whether the directory (or subtree) matches the rule's file pattern criteria
  • If matched: assign the artifact type and add the suggested group to that directory's profile
Per-directory profiling

For projects with multiple subdirectories, detect profiles per directory:

  • src/main/ vs src/test/ - different testing principles for test dirs
  • src/security/, src/auth/ - security-focused principles
  • frontend/, ui/, web/ - UI interaction principles
  • docs/, doc/ - documentation principles (@docs)
  • infra/, terraform/, k8s/, deploy/ - infrastructure principles (@infra)
  • .github/workflows/ - pipeline principles (@pipeline)
  • Any directory matching an extension-based detection rule (Phase 1.2) - apply the group from that rule

Record a profile map: { directory → [detected groups] }

Phase 3 - Propose Placements and Confirm

Based on the profile map from Phase 2, propose where to place .principles files and what to put in each. Check exclusion density (3.3) before showing anything, so the user confirms once.

3.1 - Placement strategy
  1. Git root .principles: Activate groups that apply to the whole project
  2. Subdirectory .principles: Activate additional groups or exclude principles that don't apply to that subtree

List the available groups with ls .agents/principles-catalog/groups/ and reference them by filename without .yaml. The common ones are:

Language groups: java, typescript, python, go, csharp, rust Framework groups: spring-boot, spring-data-jpa, react, angular, django, fastapi Cross-cutting code groups: microservices, security-focused Artifact-type groups: docs, infra, config, schema, pipeline

Custom groups from extra catalogs or an org baseline appear in the same directory. Groups suggested by extension detection rules (Phase 1.2) are included automatically.

If .agents/principles-catalog/org.principles exists, the organization has locked some principles (:lock). Never propose a !ID for a locked principle; if a directory truly needs an exception, propose :waive ID until YYYY-MM-DD "reason" instead and say why.

3.2 - How exclusions work (read before proposing any !)

Files are applied from the outside in, root first. The deepest file that mentions a principle decides: !ID or !@group in an outer file removes it, and an @group or ID in a deeper file adds it back. Inside one file, exclusions win over additions whatever the line order. A principle locked by the organization can never be removed.

Groups overlap: every language group includes source-code, and kotlin includes java. So !@kotlin also removes the shared principles that a Java directory needs. That is safe only when a deeper directory adds them back with its own group (@java in bot-api/java/.principles). Two rules follow:

  • Never put !@group and a group that overlaps it in the same file: the exclusion wins and removes the shared principles.
  • Put an exclusion in the directory above the ones that add their own group, or keep it out and place the group in each directory that needs it.
3.3 - Exclusion density analysis

Before writing, check whether any parent-level proposals would generate unnecessary exclusions in child directories.

When to run

Only when the profile map from Phase 2 contains two or more directories that would each receive their own .principles file (i.e., there is at least one parent-child pair in the proposed hierarchy). Skip this phase entirely if every proposed .principles file is a leaf with no applicable children.

Show full SKILL.md (770 more words)Show less
Algorithm

For each proposed parent .principles file (root or intermediate directory), evaluate every proposed entry - groups (@group) and bare principle IDs - against all proposed child directories detected in Phase 2:

  1. Count applicable children: child directories that inherit from this parent (would have their own .principles or would inherit the parent's entries).
  2. Count excluding children: children where the entry does not match the child's detected profile and would therefore need a !@group or !ID exclusion to suppress it. Remember the overlap rules in 3.2: an exclusion of a language group also removes source-code principles, so each such child needs a deeper directory that adds its own group back, or the entry should be demoted instead.
  3. Compute exclusion_ratio = excluding_children / applicable_children.
  4. If exclusion_ratio > 0.5 (strict majority excluded):
    • Demote the entry: remove it from the parent proposal; add it directly to each including child's proposal (the minority that actually benefits).
    • Record the demotion for reporting: ⬇ @<group> demoted from <parent> → <child1>/, <child2>/ - excluded in N/M children
  5. For each principle activated by a parent-level group that >50% of children would individually suppress with !PRINCIPLE-ID:
    • Consolidate: add !PRINCIPLE-ID at the parent level instead (one exclusion line replaces N child-level exclusion lines). The children that do need the principle must add it back in their own .principles file, as a bare ID or through a group of their own (the deeper file wins). Add those lines to the proposal. If more children would have to add it back than the exclusion saves, do not consolidate.
    • Record the consolidation: ↑ !PRINCIPLE-ID consolidated to <parent> - excluded in N/M children

Skip analysis for any parent with applicable_children ≤ 1 (a majority cannot be computed from a single child).

Reporting demotions and consolidations

After running the analysis, show a summary before the updated proposals if any changes were made:

Exclusion density analysis:
  ⬇ @docs demoted from root → docs/ - excluded in 3/4 children
  ⬇ @infra demoted from root → infra/, deploy/ - excluded in 3/4 children
  ↑ !CODE-TS-TEST-FIRST consolidated to src/ - excluded in 4/5 children

Updated proposals incorporate these changes.

If no changes were made, output: Exclusion density: no demotions needed.

The proposals you show in 3.4 already incorporate these changes.

3.4 - Proposal format and confirmation

For each proposed file, show:

[path]/.principles
  @group1          ← reason
  @group2          ← reason
  CODE-OB-SERVICE-LEVEL-OBJECTIVES      ← specific principle for this directory
  !CODE-TS-TEST-FIRST     ← exclusion and why

Ask once: "I propose creating/updating N .principles files. Proceed? (yes to continue, no to review proposals)". Skip the question if --yes was given.

Wait for user confirmation. If the user says no or requests changes, adjust proposals and ask again.

Phase 4 - Check Existing .principles Files

Before writing, check for existing .principles files at the proposed paths.

For each existing file:

  • Read its current contents
  • Preserve all existing entries (including !exclusions and comments)
  • Only add new entries that aren't already present
  • Never remove existing entries - that is the human's decision
  • If the file already has all proposed additions, mark it as unchanged

Determine final action per file: created | updated | unchanged

Phase 5 - Write Files and Report

Write or update each file as determined in Phase 5.

File format
# Generated by dot-scout vVERSION
# Detected: [artifact-type] / [language/framework/domain]
# Last analysed: [date]

@group1
@group2

# Direct includes
CODE-OB-SERVICE-LEVEL-OBJECTIVES

Do not add comments to lines that were already present in an existing file - only add comments to newly added entries.

Report

After writing, output:

.principles analysis complete

Files written:
  ✓ created   /path/to/.principles         (@spring-boot, @security-focused)
  ✓ created   /path/to/docs/.principles    (@docs)
  ✓ updated   /path/to/src/.principles     (added @react)
  - unchanged /path/to/infra/.principles   (no changes needed)

Active groups resolved:
  @spring-boot → @java, CODE-API-STANDARD-HTTP-METHODS, DDD-REPOSITORY, OWASP-03-INJECTION ... (N principles)
  @docs → DOC-PURPOSE, DOC-MINIMAL, DOC-AUDIENCE, DOC-ACCURACY, DOC-EXAMPLES, DOC-PROGRESSIVE-DISCLOSURE ... (N principles)

Next steps:
  - Run /dot-audit <target> to review against these principles
  - Edit .principles files manually to add !exclusions or direct principle IDs
Verify exclusions

For every directory whose .principles file contains a !, and for the directories below it, run

bash .agents/principles-catalog/bin/resolve.sh --format explain <dir>

Check that each directory ends up with the principles of its own language group, and with none from groups it should not have. Reinstated: lines show where a deeper file added something back, which is expected. If a directory lost principles it needs, fix the placement (move the exclusion up one level, or move the group down) and write the files again before Phase 6.

Phase 6 - Emit Generated Files

Run one command. It resolves the active principles for every .principles file, writes everything the review tools read, and removes generated files that no longer apply:

bash .agents/principles-catalog/bin/emit.sh --stacks <stacks>

<stacks> is the comma-separated list of artifact stacks you detected in Phase 2 (code, docs, config, infra, schema, pipeline), for example --stacks code,docs. They are remembered in install.cfg, so a later refresh needs no flag.

What it writes (deterministic - the same inputs give the same files):

  • .agents/principles-catalog/active.md - every active principle with its summary.
  • .agents/instructions/review.md - agent-neutral review instructions, plus a short managed block in AGENTS.md that points to it. Claude Code, Codex CLI, Copilot CLI and other agents that read AGENTS.md use it.
  • .github/instructions/<group>.instructions.md - Copilot Code Review, only if enabled (copilot-review in install.cfg).
  • REVIEW.md - Claude Code Review, only if enabled (claude-review in install.cfg).

The tools come from install.cfg (written by the installer). Do not ask the user which tools to generate for. If neither review integration is enabled, say so in the report and mention that ./install.sh <git-root> (interactive) enables them, or emit.sh --tools copilot,claude generates them once.

Show the script's output as the report, then add:

Next steps:
  - Review with /dot-audit <target>, or ask your agent to review; it reads .agents/instructions/review.md
  - Edit .principles files by hand to add !exclusions or direct principle IDs, then run
    bash .agents/principles-catalog/bin/emit.sh to refresh the generated files
  - Commit .principles files, .agents/principles-catalog/, .agents/instructions/ and the generated review files

If emit.sh reports warnings (unknown groups, principles missing from index.tsv, expired waivers), repeat them to the user.

© robocode-dev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/dot-scout of robocode-dev/tank-royale.

Open the folder on GitHubat commit 5000c67

Compare with similar skills

Dot Scout next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Dot Scout compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Dot Scout this skillrobocode-dev/tank-royale269—~3.9kAutomated safety check: NotesMIT
Build Teaql Appteaql/teaql-agent-kit2.8k—~4.6kAutomated safety check: PassMIT
Git History Bug Auditben-manes/caffeine18k—~3.3kAutomated safety check: PassApache-2.0
Find Untested Sourcesdotnet/skills5.6k1 repos~3.3kAutomated safety check: PassMIT
GitHub Skill ForgeYuJunZhiXue/github-skill-forge760—~2kAutomated safety check: NotesNone
Fory Performance Optimizationapache/fory4.6k—~2.2kAutomated safety check: PassApache-2.0

Similar skills

  • Build Teaql App

    teaql/teaql-agent-kit

    Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.

    2.8k GitHub stars~4.6k tokensUpdated 10 days ago
    MobileAuto-check passed
  • Git History Bug Audit

    ben-manes/caffeine

    Audits a module by walking its git history commit by commit, tracking unresolved issues forward, and reporting the ones that survive to HEAD as findings.

    18k GitHub stars~3.3k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Official

    Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.

    5.6k GitHub starsUsed in 1 repo~3.3k tokens
    Testing & QAAuto-check passed
  • GitHub Skill Forge

    YuJunZhiXue/github-skill-forge

    一个"制造技能的技能"。这个工具自动化了将任意 GitHub 仓库转换为标准化 Trae 技能的全过程,是扩展 AI Agent 能力的核心工具。

    760 GitHub stars~2k tokensUpdated 8 mo ago
    Data & AnalyticsAuto-check: notes
  • Run profile-driven bottleneck optimization across Apache Fory implementations (Java, C++, Python/Cython, Go, Rust, Swift, C, JavaScript/TypeScript, Dart, Kotlin, Scala).

    4.6k GitHub stars~2.2k tokensUpdated yesterday
    MobileAuto-check passed
  • Official

    Analyze recent GraalPy benchmark regressions on master as part of the weekly rota.

    1.7k GitHub stars~1.6k tokensUpdated yesterday
    Data & AnalyticsAuto-check passed

More from robocode-dev/tank-royale

  • Dot Audit

    robocode-dev/tank-royale

    Review a file, directory, or inline code against its activated principles.

    269 GitHub stars~3.6k tokensUpdated 2 days ago
    Auto-check: notes
  • Deploy Sample Bots

    robocode-dev/tank-royale

    Build and deploy all sample-bot zip files into the target folder.

    269 GitHub stars~369 tokensUpdated 2 days ago
    Auto-check: notes

Works with

Questions about Dot Scout

What does Dot Scout do?

Analyse a project to detect which principles apply and create or update .principles files encoding that analysis. Dot Scout is an agent skill from robocode-dev/tank-royale.principles files encoding that analysis.

When should I use Dot Scout?

Dot Scout fits situations like: the user runs /dot-scout [path] to map principles to a codebase.

How do I install Dot Scout in Claude Code?

Run `npx skills add robocode-dev/tank-royale --skill dot-scout -a claude-code`. Or copy the skill folder (.agents/skills/dot-scout in robocode-dev/tank-royale) into .claude/skills/dot-scout in your project. Claude Code loads it when a task matches its description.

How do I install Dot Scout in Codex?

Run `npx skills add robocode-dev/tank-royale --skill dot-scout -a codex`. Or copy the skill folder (.agents/skills/dot-scout in robocode-dev/tank-royale) into .agents/skills/dot-scout in your project. Codex loads it when a task matches its description.

Can I use Dot Scout in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add robocode-dev/tank-royale --skill dot-scout -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dot-scout, .gemini/skills/dot-scout, .github/skills/dot-scout and .opencode/skills/dot-scout in your project.

What does Dot Scout need to run?

Going by SKILL.md and its folder, Dot Scout needs the command-line tools its instructions call (bash). Our summary lists: Python 3; Docker. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash.

Does Dot Scout access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Dot Scout safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Dot Scout use?

Dot Scout is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Dot Scout use?

About 3.9k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Dot Scout?

Skills that share tags, products or a category with Dot Scout: Build Teaql App (teaql/teaql-agent-kit, 2.8k stars), Git History Bug Audit (ben-manes/caffeine, 18k stars), Find Untested Sources (dotnet/skills, 5.6k stars) and GitHub Skill Forge (YuJunZhiXue/github-skill-forge, 760 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Dot Scout?

robocode-dev (a GitHub organization) maintains it in robocode-dev/tank-royale, which has 269 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 5, 2026.

Source: robocode-dev/tank-royale on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.