惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hacker News: Ask HN
Hacker News: Ask HN
IT之家
IT之家
S
SegmentFault 最新的问题
T
Tailwind CSS Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
J
Java Code Geeks
博客园 - 聂微东
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
The Cloudflare Blog
博客园_首页
大猫的无限游戏
大猫的无限游戏
博客园 - 三生石上(FineUI控件)
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 【当耐特】
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
酷 壳 – CoolShell
酷 壳 – CoolShell
V
V2EX
宝玉的分享
宝玉的分享
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
月光博客
月光博客
NISL@THU
NISL@THU
T
The Exploit Database - CXSecurity.com
C
CXSECURITY Database RSS Feed - CXSecurity.com
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
Blog — PlanetScale
Blog — PlanetScale
aimingoo的专栏
aimingoo的专栏
L
LINUX DO - 热门话题
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
F
Fortinet All Blogs
博客园 - Franky
L
Lohrmann on Cybersecurity
S
Secure Thoughts
量子位
V
Vulnerabilities – Threatpost
Last Week in AI
Last Week in AI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LINUX DO - 最新话题
I
InfoQ
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
P
Proofpoint News Feed
G
GRAHAM CLULEY
Cisco Talos Blog
Cisco Talos Blog

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
Stop Teaching Terminal Commands. Teach Terminal Workflows.
Alex Shev · 2026-06-01 · via DEV Community

Most terminal education teaches commands.

That makes sense at the beginning.

You need to know what grep does. You need to know how find works. You need to understand pipes, redirects, exit codes, environment variables, and shell scripts.

But after a while, the command is not the hard part.

The hard part is the workflow.

Not:

grep -R "TODO" .

Enter fullscreen mode Exit fullscreen mode

But:

Inspect the repo.
Find the risky files.
Decide what needs changing.
Run the smallest useful command.
Verify the result.
Recover cleanly if the command was wrong.

Enter fullscreen mode Exit fullscreen mode

That is the part most people are not taught.

And it is also the part AI agents need most.


Commands are vocabulary

Knowing terminal commands is useful.

But commands are vocabulary.

Workflows are how you actually get work done.

A beginner asks:

What command lists files?

Enter fullscreen mode Exit fullscreen mode

A more experienced developer asks:

What am I trying to learn from the filesystem, and what is the safest way to inspect it?

Enter fullscreen mode Exit fullscreen mode

Those are different questions.

For example, this command is easy to memorize:

ls

Enter fullscreen mode Exit fullscreen mode

But the real workflow might be:

pwd
ls -la
find . -maxdepth 2 -type f | head
git status --short

Enter fullscreen mode Exit fullscreen mode

That sequence tells you where you are, what is around you, what kind of project you are in, and whether the workspace is already dirty.

The command is small.

The judgment around the command is the skill.


A terminal workflow has stages

I like this simple model:

inspect -> decide -> run -> verify -> recover

Enter fullscreen mode Exit fullscreen mode

That pattern shows up everywhere.

1. Inspect

Before you change anything, learn the shape of the problem.

pwd
git status --short
find . -maxdepth 2 -type f | sort | head -50

Enter fullscreen mode Exit fullscreen mode

This is not busywork.

It prevents the most common terminal mistake: running the right command in the wrong place.

2. Decide

Once you inspect, choose the smallest useful action.

Do not start with the most powerful command.

Start with the command that gives you more information or makes a reversible change.

For example:

git diff -- path/to/file

Enter fullscreen mode Exit fullscreen mode

before:

git add .

Enter fullscreen mode Exit fullscreen mode

Or:

ffprobe input.mp4

Enter fullscreen mode Exit fullscreen mode

before:

ffmpeg -i input.mp4 output.mp4

Enter fullscreen mode Exit fullscreen mode

3. Run

Run the command with a clear expectation.

You should know what success looks like before you press Enter.

Bad:

Let's try this and see what happens.

Enter fullscreen mode Exit fullscreen mode

Better:

This should produce one MP4 in the output folder, keep the source file unchanged, and exit non-zero if the input is invalid.

Enter fullscreen mode Exit fullscreen mode

4. Verify

The command finishing is not the same as the workflow being done.

If you converted a video, inspect the output.

ffprobe output.mp4

Enter fullscreen mode Exit fullscreen mode

If you changed code, run a relevant test.

npm test

Enter fullscreen mode Exit fullscreen mode

If you edited content, check the final rendered page, not just the local markdown.

Verification is where a terminal habit becomes a production workflow.

5. Recover

Every useful workflow needs a recovery path.

What happens if the command fails?

What happens if it succeeds but produces the wrong output?

What happens if the workspace already had unrelated changes?

For example:

git diff
git restore --staged .

Enter fullscreen mode Exit fullscreen mode

or:

mkdir -p output_failed
mv broken-output.mp4 output_failed/

Enter fullscreen mode Exit fullscreen mode

Recovery should not be improvised after something breaks.

It should be part of the workflow.


Why this matters more with AI agents

AI agents are very good at discovering commands.

They can usually find the right shell syntax faster than a human can.

But they can still fail in familiar ways:

  • running commands before inspecting the project
  • using broad commands when a narrow one would do
  • trusting success output too early
  • overwriting files without a recovery plan
  • skipping platform-specific verification
  • treating a tool capability as a finished workflow

That is why "give the agent terminal access" is not enough.

Tool access gives the agent hands.

The workflow tells the agent what careful work looks like.


Example: teaching grep vs teaching search

You can teach someone this:

grep -R "stripe" .

Enter fullscreen mode Exit fullscreen mode

That is a command.

But a real search workflow might be:

git status --short
find . -maxdepth 3 -type f | sort | head -100
grep -R --exclude-dir=node_modules --exclude-dir=.git "stripe" .
grep -R --include="*.ts" --include="*.tsx" "createCheckout" .

Enter fullscreen mode Exit fullscreen mode

The difference is not just syntax.

The workflow says:

  • check the workspace first
  • avoid dependency folders
  • search broadly, then narrow by file type
  • search both product terms and implementation terms
  • do not edit until you know where the real boundary is

That is what developers actually do.

The command is only one piece.


Example: teaching ffmpeg vs teaching media prep

You can teach:

ffmpeg -i input.mov output.mp4

Enter fullscreen mode Exit fullscreen mode

That is fine for a demo.

But if the file needs to be uploaded to a platform, the workflow matters more:

Inspect input.
Check duration, codec, pixel format, audio, and dimensions.
Convert to a safe default.
Inspect output.
Check file size.
Upload.
Verify the real platform preview.
Publish.
Verify the final post.

Enter fullscreen mode Exit fullscreen mode

The important lesson is not "use FFmpeg."

The important lesson is:

Never trust a media conversion until the destination platform accepts it.

Enter fullscreen mode Exit fullscreen mode

That is workflow knowledge.


This is where Terminal Skills fits

Terminal Skills is useful because it gives agents a way to package workflows, not just commands.

A good skill does not only say:

Run this command.

Enter fullscreen mode Exit fullscreen mode

It says:

Use this when the task looks like this.
Inspect these inputs.
Run these steps.
Stop in these cases.
Verify these outputs.
Report the result in this format.

Enter fullscreen mode Exit fullscreen mode

That is the missing layer between raw tool access and reliable automation.

For example, a media skill can teach an agent how to prepare upload-safe video.

A Git skill can teach an agent how to inspect a dirty worktree without destroying user changes.

A deployment skill can teach an agent how to build, test, deploy, and verify a live URL.

The point is not that the terminal becomes easier.

The point is that the workflow becomes repeatable.


A useful skill has a definition of done

This is the part I care about most.

A command can finish successfully and still not solve the problem.

A skill should define done.

For a code change:

Done means the targeted files were changed, tests passed, no unrelated files were touched, and the result was summarized with exact file paths.

Enter fullscreen mode Exit fullscreen mode

For a video conversion:

Done means the output file is readable, uses the expected codec and pixel format, is under the target size, and has been accepted by the upload composer.

Enter fullscreen mode Exit fullscreen mode

For a content workflow:

Done means the draft exists, the links work, the target platform format is respected, and publishing approval was recorded.

Enter fullscreen mode Exit fullscreen mode

That last line matters.

In real work, verification and approval are part of the system.

They are not optional admin details.


The better way to teach terminal work

I still think people should learn commands.

But I would not stop there.

Teach commands inside workflows.

Instead of:

Here are 20 useful Linux commands.

Enter fullscreen mode Exit fullscreen mode

Teach:

Here is how to inspect an unfamiliar repo.
Here is how to safely search a codebase.
Here is how to prepare a video for upload.
Here is how to debug a broken script.
Here is how to verify a deployment.
Here is how to recover after a bad command.

Enter fullscreen mode Exit fullscreen mode

That is closer to how developers actually work.

It is also closer to what AI agents need.

Because the future of terminal automation is not agents memorizing more commands.

It is agents following better workflows.


If you are building with AI agents, ask this:

What terminal task do I keep explaining from scratch?

Enter fullscreen mode Exit fullscreen mode

That is probably not a prompt problem.

It is probably a workflow that should become a skill.

Disclosure: I used AI assistance to draft and edit this article, then reviewed the examples, commands, and claims before publishing.