---
title: "Skills or Commands and How To Use Them"
url: https://daily.dev/posts/skills-or-commands-and-how-to-use-them-jlx6jthmx
source_url: https://spin.atomicobject.com/skills-commands-how-to-use
type: article
source: "Atomic Spin"
published: 2026-08-24T12:10:34.977Z
updated: 2026-08-26T01:44:28.801Z
tags: ["github", "ai-agents", "prompt-engineering", "claude-code"]
reading_time: 11
upvotes: 1
comments: 0
language: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Skills or Commands and How To Use Them

**[Atomic Spin](https://daily.dev/sources/atomicobject)** · 11 min read · 1 upvotes · 0 comments

## Summary

Claude Code offers two extension mechanisms, commands and skills, both stored as version-controlled Markdown files. Commands are explicitly invoked with a slash prefix while skills are automatically triggered by the model when relevant; in recent Claude Code versions, the two have converged, with .claude/skills/ now recommended over .claude/commands/. The piece walks through building custom tools: scoping permissions with allowed-tools, passing arguments, bundling scripts, composing tools together, and forking existing community skills like Matt Pocock's grill-with-docs. It closes with a full example command for automating PR review comment triage using the GitHub CLI.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://spin.atomicobject.com/skills-commands-how-to-use>

## Questions this post answers

### What is the difference between a command and a skill in Claude Code?

A command is explicitly invoked by typing a slash name like /deploy, running a fixed playbook on demand, while a skill is invoked automatically by the model when it decides the task matches the skill's description. Commands are a single Markdown prompt with frontmatter like allowed-tools; skills are a folder containing SKILL.md plus optional bundled scripts and can carry model-invocation metadata.

_daily.dev surfaces practical breakdowns like this for developers customizing their Claude Code setup._

### Should I put my Claude Code commands in .claude/commands/ or .claude/skills/?

Use .claude/skills/, since it is now the recommended location in recent Claude Code versions, though .claude/commands/ still works. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both produce a usable /deploy command, since both are just Markdown with YAML frontmatter and a command is effectively a skill with the extra features turned off.

_developers migrating Claude Code setups can track workflow changes like this on daily.dev._

### How do I restrict what a Claude Code command is allowed to do in the shell?

Declare exact allowed commands in the frontmatter using the allowed-tools field, for example Bash(gh pr view:*), Bash(gh pr diff:*), Bash(gh api:*), Bash(git branch:*), and Bash(git remote:*). This acts as a guardrail so a tool meant only to read PR data cannot execute destructive actions like a force-push.

_daily.dev helps developers building safer AI agent tooling keep up with patterns like scoped permissions._

---

Tags: [#github](https://daily.dev/tags/github), [#ai-agents](https://daily.dev/tags/ai-agents), [#prompt-engineering](https://daily.dev/tags/prompt-engineering), [#claude-code](https://daily.dev/tags/claude-code)

[View this post on daily.dev](https://daily.dev/posts/skills-or-commands-and-how-to-use-them-jlx6jthmx)
