AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Naming Conventions

skill-techymt-claude-code-superpowers-naming-conventions · by TechyMT

|

No reviews yet
0 installs
9 views
0.0% view→install

Install

$ agentstack add skill-techymt-claude-code-superpowers-naming-conventions

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-techymt-claude-code-superpowers-naming-conventions)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
4mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Naming Conventions? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Naming Conventions

The pattern

Claude Code uses a set of naming conventions that encode the role of a file or identifier in its name. A file named BashTool.tsx is a Tool implementation with UI concerns. A file named BashTool.ts is a Tool implementation with no UI. A function named isConcurrencySafe returns a boolean about concurrency. A function named getBranch fetches a value. A constant named MAX_STATUS_CHARS is a numeric limit. These are not accidental — reading the name tells you the role without reading the implementation.

Why this matters

At ~512K lines across 1,884 files, Claude Code is too large for any individual to hold in memory. Naming conventions serve as a file-system-level type system: you can predict what's in a file before opening it. AgentTool/AgentTool.tsx will export a Tool that has UI progress output. state/AppStateStore.ts will export the AppState type and initial state. hooks/useCanUseTool.ts will export a React hook returning a permission-checking function.

How to apply it

Files:

  • Tools: src/tools/[Name]Tool/[Name]Tool.ts[x].tsx if the tool renders JSX output
  • Commands: src/commands/[kebab-name]/index.ts or src/commands/[kebab-name].ts
  • React hooks: src/hooks/use[Name].ts — always prefixed with use
  • React components: src/components/[Name].tsx
  • Utilities: src/utils/[name].ts — lowercase, describe the domain (e.g., git.ts, path.ts)
  • Types: src/types/[name].ts — lowercase file, PascalCase exports

Identifiers:

  • Types, interfaces, classes: PascalCase (e.g., ToolUseContext, AppState, PermissionResult)
  • Functions: camelCase starting with a verb (e.g., createTaskStateBase, normalizeMessages, getGitStatus)
  • Booleans and boolean-returning functions: is/has prefix (e.g., isConcurrencySafe, isReadOnly, hasWorktreeChanges, isENOENT)
  • Event handlers and callbacks: on[Event] prefix (e.g., onProgress, onChangeAppState, onCompactProgress)
  • Constants: UPPER_SNAKE_CASE for numeric/string limits; PascalCase for object constants (e.g., MAX_STATUS_CHARS, IDLE_SPECULATION_STATE)
  • Tool exports: named constant matching the file name (e.g., export const BashTool, export const FileReadTool)
  • Async functions: same naming as sync — the Promise return type is the indicator, not a naming convention

In the source

// Source: src/tools/BashTool/BashTool.tsx
// File name: [Name]Tool.tsx — Tool with JSX rendering
// Export name: matches file (BashTool)
export const BashTool: Tool = {
  // Boolean method: is prefix
  isConcurrencySafe(input) { ... },
  isReadOnly(input) { ... },
  isDestructive(input) { ... },

  // Verb prefix: call, description
  async call(args, context, canUseTool) { ... },
  async description(input, options) { ... },
}

// Source: src/context.ts
// Constant: UPPER_SNAKE_CASE for a numeric limit
const MAX_STATUS_CHARS = 10_000

// Function: verb prefix (get)
export const getGitStatus = memoize(async (): Promise => { ... })
export const getBranch = async (): Promise => { ... }
export const getIsGit = async (): Promise => { ... }

// Source: src/state/AppStateStore.ts
// Type: PascalCase
export type AppState = DeepImmutable

// Source: src/Tool.ts
// Callback types: on prefix
export type ToolCallProgress = (progress: P) => void
// Used as: onProgress, onChangeAppState, onCompactProgress

// Source: src/hooks/useCanUseTool.ts
// React hook: use prefix
export function useCanUseTool(): CanUseToolFn { ... }

// Source: src/utils/file.ts
// Boolean helper: is prefix
export function isENOENT(err: unknown): boolean { ... }

The getIsGit naming is notable: it returns Promise, so it uses the get verb prefix (because it fetches from disk/git) combined with the boolean it returns. This is consistent: getX fetches, isX describes a property — when a function does both, get takes precedence.

Apply it to your code

Before — inconsistent naming:

// Wrong: file named searchHelper.ts in tools/
// Wrong: function named checkIfSearch instead of isSearch
// Wrong: constant named maxResults instead of MAX_RESULTS
// Wrong: callback named handleProgress instead of onProgress

export function checkIfSearch(command: string): boolean { ... }
const maxResults = 100
const handleProgress = (data: ProgressData) => { ... }

After — names that match the Claude Code conventions:

// File: src/utils/bash.ts (utility, lowercase, domain-named)
// File: src/tools/SearchTool/SearchTool.ts (Tool, PascalCase + Tool suffix)

export function isSearchCommand(command: string): boolean { ... }  // is prefix for boolean
const MAX_RESULTS = 100                                             // UPPER_SNAKE_CASE for limit
const onProgress = (data: ProgressData) => { ... }                 // on prefix for callback

Signals that you need this pattern

  • A new Tool file is named searchHelper.ts instead of SearchTool.ts
  • A boolean-returning function is named checkPermission instead of hasPermission or isPermissionGranted
  • An event callback is named handleProgress or progressCallback instead of onProgress
  • Constants like maxTokens or defaultTimeout don't use UPPER_SNAKE_CASE
  • A React hook doesn't start with use

Signals that you're over-applying it

  • Single-letter variables in tight loops (i, j, k) are fine — don't verbose-name loop indices
  • Test helper functions in test files don't need to follow production naming as strictly
  • The is prefix for boolean-returning functions is the most important convention; the others are softer

Works with

  • module-organisation — naming conventions for files extend to directory structure
  • tool-definition — canonical names for Tool methods (call, description, inputSchema)
  • types-and-interfaces — PascalCase type naming

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.