Generates a repo-specific orientation.md resource for the learning-opportunities skill.

CC-BY-4.0Auto-check: notesDevelopment

Install Orient

skills CLI
$ npx skills add DrCatHicks/learning-opportunities --skill orient -a claude-code

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

GitHub CLI
$ gh skill install DrCatHicks/learning-opportunities orient --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/DrCatHicks/learning-opportunities.git skills-src && mkdir -p .claude/skills && cp -r skills-src/orient/skills/orient .claude/skills/orient && 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
orient
GitHub stars
2.5k
Token cost
~3.1k tokens
SKILL.md length
1,266 words
Files
2
Skills in repo
2
Repo updated
First seen
Licence
CC-BY-4.0

At a glance

Generates a repo-specific orientation.md resource for the learning-opportunities skill.

  • Works in 5 steps: Find where to write orientation.md → Detect the repo's primary language(s) → Explore the repo → …
  • Asks for repo orientation
  • SKILL.md covers Purpose, Step 1: Find where to write…, Argument check and Step 2: Detect the repo's…, plus 4 more sections
  • Calls uvx and git

What it does

Orient is an agent skill from DrCatHicks/learning-opportunities. Generates a repo-specific orientation.md resource for the learning-opportunities skill. Invoke directly when the user asks for repo orientation; do not trigger automatically.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `resources/orient-bibliography.md`).

It sits in Development. It works with TypeScript. The repository describes itself as: A Claude or Codex skill for deliberate skill development during AI-assisted coding. The licence is CC-BY-4.0.

When your agent uses it

  • Asks for repo orientation
  • Do not trigger automatically

Example prompts

  • “Use the orient skill to generate a repo-specific orientation.md resource for the learning-opportunities skill”
  • “/orient”

Requirements

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

Workflow steps

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

  1. Find where to write orientation.md
  2. Detect the repo's primary language(s)
  3. Explore the repo
  4. Synthesize and write orientation.md
  5. Confirm to the user

What it can do on your machine

Read from SKILL.md and the folder at commit 3862d2e. 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
    • Glob
    • Grep
    • Bash
    • Write

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uvx
    • git

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

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.astral.sh

    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

Orient loads about 3.1k tokens when it runs. Until then it costs about 45 tokens; SKILL.md has 1,266 words of instructions outside code blocks.

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

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.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Glob, Grep, Bash, Write

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 DrCatHicks/learning-opportunities at commit 3862d2e, republished under its CC-BY-4.0 licence (© DrCatHicks). 1,266 words, ~3,110 tokens.

Download SKILL.mdSave it as .claude/skills/orient/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
orient
description
Generates a repo-specific orientation.md resource for the learning-opportunities skill. Invoke directly when the user asks for repo orientation; do not trigger automatically.
allowed-tools
Read, Glob, Grep, Bash, Write
argument-hint
[showboat]
disable-model-invocation
true

Create Orientation

Purpose

Generate a repo-specific orientation.md file inside the learning-opportunities skill's resources/ directory. This file is used by that skill when invoked with the orient argument to run a structured learning exercise for someone new to the codebase.


Step 1: Find where to write orientation.md

Always write to the project level, regardless of where the learning-opportunities skill is installed.

When running in Codex, write to:

.codex/skills/learning-opportunities/resources/orientation.md

When running in Claude Code, write to:

.claude/skills/learning-opportunities/resources/orientation.md

Both paths are relative to the current working directory.

If the target directory does not exist, create it. If it already exists, leave it and any files inside it untouched — only write orientation.md.

This keeps orientation files co-located with the repo they describe — they can be committed to version control, shared with teammates, and never collide across projects.


Argument check

You were invoked with arguments: $ARGUMENTS

If the argument is showboat, skip to the Showboat Path section below.

Otherwise, continue with Steps 2–5 (the default path).


Step 2: Detect the repo's primary language(s)

Check for these manifest/config files at the project root and note all that exist. A repo may use multiple languages.

LanguageSignal files
Pythonpyproject.toml, setup.py, setup.cfg, Pipfile, requirements.txt
JavaScriptpackage.json (no tsconfig.json)
TypeScriptpackage.json + tsconfig.json
RDESCRIPTION, NAMESPACE, any *.Rproj
RubyGemfile, any *.gemspec
Gogo.mod
RustCargo.toml
C/C++CMakeLists.txt, configure.ac, root-level Makefile
Java/Kotlinpom.xml, build.gradle, build.gradle.kts
C#any *.csproj or *.sln

Record all detected languages. For each detected language, read its primary manifest file in full — it contains declared purpose, dependencies, entry points, and scripts/commands that are essential for orientation.


Step 3: Explore the repo

Use the following sequence, drawn from research on expert program comprehension strategies. Experts read strategically and selectively, not exhaustively. The goal is a mental model of structure, not line-by-line understanding.

3a. README and top-level docs

Read README.md, README.rst, or README at the project root. Also check for a docs/ directory — read its index or table of contents if present. This gives the stated purpose and intended audience.

Source: Spinellis, "Code Reading: The Open Source Perspective" (2003) — start with the build system and README before reading any application code.

3b. Directory tree

Run find . -maxdepth 3 -not -path '*/.git/*' -not -path '*/node_modules/*' -not -path '*/__pycache__/*' -not -path '*/.venv/*' to get the top-level structure. Read the directory tree as an architectural table of contents — naming conventions (src/, lib/, tests/, cmd/, pkg/) reveal intent before any code is read.

Source: Spinellis (2003) — "directory tree as table of contents."

3c. Entry points

Identify and read the main entry points based on detected language:

  • Python: __main__.py, cli.py, main.py, or the [tool.poetry.scripts] / [project.scripts] section of pyproject.toml
  • JavaScript/TypeScript: main field in package.json, index.js, src/index.ts
  • Go: files in cmd/*/main.go or root main.go
  • Rust: src/main.rs or src/lib.rs
  • R: R/ directory, the DESCRIPTION file's Imports
  • Ruby: files in bin/, lib/<gem-name>.rb
  • C/C++: main.c, main.cpp, or the primary target in CMakeLists.txt

Source: Hermans, "The Programmer's Brain" (2021, Manning) — follow the entry point and call graph one level at a time.

3d. Test files

Read 2–3 test files, prioritizing integration or end-to-end tests over unit tests. Tests are executable specifications — reading test names and assertions is one of the fastest ways to understand what a module is meant to do.

Source: Storey et al., "How Software Developers Use Tools, Cognitive Strategies, and Representations to Navigate Code" (IEEE TSE, 2006) — use the test suite as a specification.

3e. Core modules

Identify the 5–8 most important source files based on what you have learned. Read their top-level structure (class/function names, imports, docstrings) without necessarily reading every implementation in full.

3f. Recent git history (if git is available)

Run git log --oneline -20 to see recent activity. Run git log --format="%f" | sort | uniq -c | sort -rn | head -10 to identify the most-edited files. High-churn files are usually the core of the system.

Source: Spolsky practitioner writing — "find the biggest, most-edited file; read git history to understand why code is the way it is."


Step 4: Synthesize and write orientation.md

Write the file to the path identified in Step 1. Use this exact structure:

markdown
# Repo Orientation: [repo name]

> Generated by orient. Re-run to update.

## One-line purpose
[Single sentence: what this repo does and why it exists. Written for someone with no prior context.]

## Primary language(s)
[List languages detected, with the dominant one first.]

## Pipeline / workflow stages
[Ordered list of the main stages data or requests flow through. One line each. If the repo has no pipeline, describe the main modules and their relationships instead.]

## Key files
[6–10 entries in this format:]
- `path/to/file.py` — [what it does] | [why a new developer should read it]

## Core concepts
[3–5 domain or architectural concepts essential to working in this codebase. For each:]
**[Concept name]**: [Plain-English definition. Where in the code it lives.]

## Common gotchas
[2–3 things that commonly trip up new developers. Be specific — reference actual file paths or function names.]

## Suggested exercise sequence
[EXACTLY 2 exercises. These are orientation exercises — their job is to build a high-level mental model of the repo, not to drill implementation details.

Orientation exercises follow this pattern: direct the learner to read one specific, short artifact first, then ask them to synthesize or explain what they just read. Never ask them to predict something they couldn't know without reading — the goal is comprehension and synthesis, not prior knowledge.

Good orientation exercises:
- "Open README.md and read the Features section. Then close it and explain to a non-developer what this tool produces and why someone would use it."
- "Open `models.py`. Find the dataclass that represents everything the pipeline produces for one audio file. What fields does it have, and what does that tell you about the pipeline's stages?"
- "Open `config/default.yaml` and skim it. What are the two or three settings you'd most likely need to change for a new project, and why?"

Bad orientation exercises (save these for later sessions):
- "Without opening any files, predict the pipeline stages" — learner has no basis for this
- Predicting specific function outputs, column names, or algorithmic behavior
- Tracing through individual method implementations
- Debugging specific logic (e.g. merge suffix behavior, metadata propagation)

For each exercise, specify: the exact file to open, what to read, and what synthesis question to answer after reading.]

## Sources consulted
[List the files and paths you actually read while generating this file.]

Keep each section concise. This is a teaching scaffold, not documentation. Prioritize clarity over completeness.


Step 5: Confirm to the user

Note for skill maintainers: Academic and practitioner sources for the exploration methodology in Steps 3a–3f are documented in resources/orient-bibliography.md. Load that file only if you need to update or cite sources — it is not needed during normal skill execution.

Tell the user:

  • Where the file was written
  • How many key files and concepts were identified
  • How to use it: invoke learning-opportunities with the orient argument
  • That they can re-run orient at any time to regenerate it as the codebase evolves

Show full SKILL.md (495 more words)Show less

Showboat Path

This path replaces Steps 2–5 when the argument is showboat. It produces orientation.md at the same location identified in Step 1, but uses the showboat CLI tool (via uvx) to build a detailed, linear code walkthrough.

Showboat Step 1: Check for uv

Run command -v uv to verify that uv is installed.

If uv is not found, tell the user:

uv is required for showboat mode but was not found on your PATH. Install it from: https://docs.astral.sh/uv/getting-started/installation/

Then stop — do not proceed further.

Showboat Step 2: Read the repo and plan the document

Read the repo to understand its structure, purpose, and key code paths. Then plan a linear walkthrough document with:

  • A title and table of contents
  • Commentary sections that explain the codebase narratively, in reading order
  • A Code Listings appendix containing the actual code snippets referenced by commentary
  • A suggested exercise sequence (same criteria as Step 4's exercise requirements — exactly 2 orientation exercises)

Plan all section headings, code snippets, and sequential listing numbers upfront before writing anything. Each listing gets a sequential number (Listing 1, Listing 2, etc.) and a short description.

Showboat Step 3: Learn the showboat tool

Run uvx showboat --help to learn the available commands and their syntax.

Showboat Step 4: Build orientation.md using showboat commands

Use the showboat CLI to build the file. The output path is the same orientation.md from Step 1. Execute commands in this order:

4a. Initialize the document
uvx showboat init <path-to-orientation.md> "<Title>"

Then add a table of contents via uvx showboat note.

4b. Write all commentary sections

Add each commentary section using uvx showboat note. Follow these rules for note content:

  • No fenced code blocks inside notes — use inline backtick code (`like_this`) instead
  • Reference code listings with inline links: *([Listing N: description](#listing-N))*
  • Write narratively — explain why the code is structured this way, not just what it does
4c. Write the Code Listings appendix

For each listing planned in Showboat Step 2:

  1. Add an anchor note: uvx showboat note with a heading like ### Listing N: description and an HTML anchor <a id="listing-N"></a>
  2. Add the code via uvx showboat exec to capture the actual file content (e.g., using cat or sed to extract the relevant lines)
4d. Append suggested exercise sequence

Add a final section via uvx showboat note with exactly 2 orientation exercises. These follow the same criteria as the default path's Step 4:

  • Direct the learner to read one specific, short artifact first
  • Then ask them to synthesize or explain what they just read
  • Never ask them to predict something they couldn't know without reading
  • Specify: the exact file to open, what to read, and what synthesis question to answer
4e. Verify the document

Run:

uvx showboat verify <path-to-orientation.md>

Fix any issues reported before proceeding.

Showboat Step 5: Confirm to the user

Tell the user:

  • Where the file was written
  • That it was generated using showboat mode (a linear code walkthrough)
  • How to use it: /learning-opportunities orient
  • That they can re-run /orient showboat at any time to regenerate it

© DrCatHicks, CC-BY-4.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file in orient/skills/orient of DrCatHicks/learning-opportunities.

  • SKILL.md
  • resources/orient-bibliography.md

Open the folder on GitHubat commit 3862d2e

Compare with similar skills

Orient 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.

Orient compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Orient this skillDrCatHicks/learning-opportunities2.5k—~3.1kAutomated safety check: NotesCC-BY-4.0
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT
Nx Importnrwl/nx29k6 repos~3.5kAutomated safety check: PassMIT
Install Anti-Slop Oxlint Rulesdmmulroy/anti-slop5.3k1 repos~2.2kAutomated safety check: PassMIT
OpenTUI Terminal Interfacescline/cline70k—~1.9kAutomated safety check: PassApache-2.0

Similar skills

  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Nx Import

    nrwl/nx

    Import, merge, or combine repositories into an Nx workspace using nx import.

    29k GitHub starsUsed in 6 repos~3.5k tokens
    DevelopmentAuto-check passed
  • Installs, updates or migrates the vendored anti-slop Oxlint plugin in a repository, keeping local rule changes and the plugin's license and provenance files.

    5.3k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Helps build terminal user interfaces with OpenTUI using its core imperative API or its React and Solid reconcilers, with references for layout, keyboard, animation and testing.

    70k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Frontend Code Review

    langgenius/dify

    Reviews frontend changes under `web/` or `packages/dify-ui/` for concrete defects and broken project contracts, using routed rule packs and a severity scale for findings.

    158k GitHub stars~938 tokensUpdated today
    DevelopmentAuto-check passed

More from DrCatHicks/learning-opportunities

  • Learning Opportunities

    DrCatHicks/learning-opportunities

    Facilitates deliberate skill development during AI-assisted coding.

    2.5k GitHub stars~2.5k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Orient

What does Orient do?

Generates a repo-specific orientation.md resource for the learning-opportunities skill. Orient is an agent skill from DrCatHicks/learning-opportunities.md resource for the learning-opportunities skill.

When should I use Orient?

Orient fits situations like: asks for repo orientation; do not trigger automatically.

How do I install Orient in Claude Code?

Run `npx skills add DrCatHicks/learning-opportunities --skill orient -a claude-code`. Or copy the skill folder (orient/skills/orient in DrCatHicks/learning-opportunities) into .claude/skills/orient in your project. Claude Code loads it when a task matches its description.

How do I install Orient in Codex?

Run `npx skills add DrCatHicks/learning-opportunities --skill orient -a codex`. Or copy the skill folder (orient/skills/orient in DrCatHicks/learning-opportunities) into .agents/skills/orient in your project. Codex loads it when a task matches its description.

Can I use Orient 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 DrCatHicks/learning-opportunities --skill orient -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/orient, .gemini/skills/orient, .github/skills/orient and .opencode/skills/orient in your project.

What does Orient need to run?

Going by SKILL.md and its folder, Orient needs the command-line tools its instructions call (uvx and git). Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Glob, Grep, Bash, Write.

Does Orient access the network?

SKILL.md names 1 domain. As links in the text: docs.astral.sh. This is read from the text; nothing was executed.

Is Orient safe to install?

Our automated static check of SKILL.md found notes only (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 Orient use?

Orient is published under the CC-BY-4.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Orient use?

About 3.1k tokens (SKILL.md is roughly 12k 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 Orient?

Skills that share tags, products or a category with Orient: Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Nx Import (nrwl/nx, 29k stars) and Install Anti-Slop Oxlint Rules (dmmulroy/anti-slop, 5.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Orient?

DrCatHicks (a GitHub user) maintains it in DrCatHicks/learning-opportunities, which has 2,482 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on August 19, 2026.

Source: DrCatHicks/learning-opportunities on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.