Migrate Core Code to Submodules
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
Evaluates and carries out non-trivial software changes from first principles: ground the problem, name real consumers, choose the smallest sufficient solution and require evidence.
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install bytedance/deer-flow engineer-system-change --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agent/skills/engineer-system-change .claude/skills/engineer-system-change && rm -rf skills-srcUse ~/.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/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .claude/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-changeType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install bytedance/deer-flow engineer-system-change --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agent/skills/engineer-system-change .agents/skills/engineer-system-change && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .agents/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install bytedance/deer-flow engineer-system-change --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agent/skills/engineer-system-change .cursor/skills/engineer-system-change && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .cursor/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/bytedance/deer-flow.git --path .agent/skills/engineer-system-change--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install bytedance/deer-flow engineer-system-change --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agent/skills/engineer-system-change .gemini/skills/engineer-system-change && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .gemini/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install bytedance/deer-flow engineer-system-changeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agent/skills/engineer-system-change .github/skills/engineer-system-change && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .github/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add bytedance/deer-flow --skill engineer-system-change -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install bytedance/deer-flow engineer-system-change --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/bytedance/deer-flow.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agent/skills/engineer-system-change .opencode/skills/engineer-system-change && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "engineer-system-change" agent skill from https://github.com/bytedance/deer-flow/tree/main/.agent/skills/engineer-system-change into .opencode/skills/engineer-system-change/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "engineer-system-change", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
engineer-system-changeEvaluates and carries out non-trivial software changes from first principles: ground the problem, name real consumers, choose the smallest sufficient solution and require evidence.
Every proposed change is treated as a hypothesis about a real system, not a checklist. The agent keeps the task boundary clear: an assessment or plan changes nothing in the project or external state, implementation passes the decision gates first and is verified afterward, and permission to implement is separate from permission to commit, push, deploy, publish or update issues. It inspects the current revision and discussion instead of trusting a stale checkout or an RFC alone, and separates verified facts, inferences and unknowns.
The first gate grounds the problem by tracing the current workflow or code path, stating the undesirable behavior and the outcome that should replace it, checking whether the existing system or procedure already solves it, and listing adjacent paths and workarounds. An absent field or interface counts as an observation, not proof of a requirement, and the result can be STOP or NEEDS_EVIDENCE.
The second gate names semantic consumers for every proposed durable field, event, API, table, store, module, service or workflow, asking who produces it, which named caller reads it, what behavior changes after consumption and where production reaches it. The description adds choosing the smallest sufficient solution, rejecting pseudo-requirements and speculative abstractions, and requiring evidence proportional to risk. It is not for mechanical edits, code explanation or reviewing a finished diff.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 5ecc1c2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md.
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
System Change Engineering loads about 2.5k tokens when it runs. Until then it costs about 167 tokens; SKILL.md has 1,268 words of instructions outside code blocks.
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.
The automated check found no risky patterns in SKILL.md.
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.
The full file from bytedance/deer-flow at commit 5ecc1c2, republished under its MIT licence (© bytedance). 1,268 words, ~2,459 tokens.
.claude/skills/engineer-system-change/SKILL.md (or your agent's skills folder).Treat every proposed change as a hypothesis about a real system, not as an implementation checklist. Establish whether the change should exist before designing or building it, then keep the solution and the process proportional to the risk.
Return STOP only when evidence affirmatively shows that no change is needed or the affected workflow already achieves the outcome. Return NEEDS_EVIDENCE when an unverified fact prevents the decision.
For every proposed durable field, event, API, table, store, module, service, or workflow, establish:
| Question | Required answer |
|---|---|
| Producer or lifecycle owner | What creates, updates, or owns it? |
| Committed consumer | Which named caller, component, operator, or user reads or acts on it now or as part of this same accepted slice? |
| Semantic use | What behavior, decision, or externally visible result changes after consumption? |
| Reachable path | Where does production reach consumption in the current system or proposed slice? |
| Absence test | Which verified scenario or accepted outcome fails if the addition is removed? |
Accept a proposed consumer only when it is tied to a verified current need and committed integration in the same change. Do not accept a roadmap, possible future evaluator, generic read/debug API, storage alone, or “future flexibility” as a semantic consumer. If an addition has no such consumer, remove or defer it. Treat a public or externally consumed contract as a compatibility boundary even when no in-repository caller is visible. Absence of a discoverable caller is uncertainty, not proof that no consumer exists.
Consider solutions in this order and stop at the first one that fully satisfies the verified outcome and invariants without shifting disproportionate recurring cost, coupling, or risk downstream:
Inspect only relevant dimensions, but do not omit a dimension merely because the proposal omits it:
For state replay or retry features, explicitly distinguish restored application state from external side effects that cannot be undone.
Label material risk claims as VERIFIED, INFERENCE, or UNKNOWN. Use an inference to request a focused check, not to require new architecture as though the claim were already proven.
Evidence labels classify individual claims; verdicts classify the overall decision. An UNKNOWN requires NEEDS_EVIDENCE only when the unknown blocks a material decision.
Before implementation, require observed evidence for the current-system claims that justify the decision and a proportional, executable verification plan. Treat proposed checks as a verification plan, not observed evidence.
When implementation is authorized:
STOP: evidence affirmatively shows that no current change is needed, or that existing capability already achieves the accepted outcome.REDUCE: the problem is real, but the proposed scope or abstraction exceeds the evidence.REVISE: the problem and approximate scope are justified, but a correctness, contract, or failure-semantics defect must change before proceeding.PROCEED: the problem, consumers, minimum solution, consequences, and proportional verification plan are sufficiently established.NEEDS_EVIDENCE: a decision would be guesswork until a specific fact, code path, incident, or consumer is verified.Do not force a binary approve/reject judgment when evidence is incomplete.
Choose the verdict from the condition blocking the earliest gate, not from the gate number: affirmative evidence that no change is needed maps to STOP; a decision-blocking unknown maps to NEEDS_EVIDENCE; a real problem with unsupported scope or no committed consumer maps to REDUCE; and a confirmed correctness, contract, or failure-semantics defect maps to REVISE. Use PROCEED only when no gate is blocked.
When more than one condition applies, give one primary verdict and list the other required changes without inventing a compound status.
A verdict records the decision gate and never expands authorization. After authorized implementation, separately report the implemented slice, observed verification, and remaining uncertainty.
For a simple change, report only:
For a cross-boundary change or RFC, add:
Do not create ceremonial documents or exhaustive matrices when a short evidence-backed answer is sufficient. The workflow itself must not become overengineering.
© bytedance, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .agent/skills/engineer-system-change of bytedance/deer-flow.
Open the folder on GitHubat commit 5ecc1c2
System Change Engineering 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| System Change Engineering this skillbytedance/deer-flow | 84k | — | ~2.5k | Automated safety check: Pass | MIT | |
| Migrate Core Code to Submodulestinyhumansai/openhuman | 42k | — | ~2.6k | Automated safety check: Pass | GPL-3.0 | |
| ast-grep Structural Searchcode-yeongyu/oh-my-openagent | 70k | — | ~3.3k | Automated safety check: Pass | MIT | |
| Architecture PatternsKartikLabhshetwar/better-shot | 2.4k | 2 repos | ~1.4k | Automated safety check: Pass | Custom licence | |
| ast-grep Codemod Referencewarp-drive-data/warp-drive | 3.2k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Brooks Audithyhmrright/brooks-lint | 1.5k | 1 repos | ~537 | Automated safety check: Pass | MIT |
tinyhumansai/openhuman
Plans and carries out moving non-host-specific code and its tests from the OpenHuman core into vendored tiny submodule libraries, then releases the submodule and re-pins the host.
code-yeongyu/oh-my-openagent
Searches and rewrites code by syntax-tree shape across 25 languages with ast-grep, for codemods, structural queries and YAML lint rules, using a Python wrapper script.
KartikLabhshetwar/better-shot
Deep dive into software architecture for macOS. An agent skill from KartikLabhshetwar/better-shot.
warp-drive-data/warp-drive
Reference for writing and debugging TypeScript and JavaScript codemods with @ast-grep/napi: parsing, node queries, meta-variables, rule objects and editing.
hyhmrright/brooks-lint
Architecture audit that maps module dependencies, checks layering integrity, and flags structural decay across a codebase, drawing on twelve classic engineering books.
hylarucoder/hai-stack
Produces a ready-to-run ast-grep command or reusable YAML lint/codemod rule, validated against positive and negative fixtures.
bytedance/deer-flow
Deploys a project to Vercel with one script and no login, then returns a live preview URL and a claim link for moving the deployment into your own Vercel account.
bytedance/deer-flow
Picks a suitable chart type from 26 options for your data, maps the data to that chart's parameters and generates a chart image through a JavaScript script.
bytedance/deer-flow
Researches a GitHub repository over four rounds using the GitHub API and web search, then writes a structured markdown report with timeline, metrics and Mermaid diagrams.
bytedance/deer-flow
Analyzes uploaded Excel and CSV files with SQL through DuckDB, producing schema inspections, statistical summaries and exports to CSV, JSON or Markdown.
bytedance/deer-flow
Turns an image request into a structured JSON prompt and runs a bundled Python script to generate the picture, optionally guided by reference images.
bytedance/deer-flow
Walks through an end-to-end smoke test of a DeerFlow deployment: pull the latest code, deploy with Docker or locally, verify services, run health checks and write a report.
Categories
Evaluates and carries out non-trivial software changes from first principles: ground the problem, name real consumers, choose the smallest sufficient solution and require evidence. Every proposed change is treated as a hypothesis about a real system, not a checklist. The agent keeps the task boundary clear: an assessment or plan changes nothing in the project or external state, implementation passes the decision gates first and is verified afterward, and permission to implement is separate from permission to commit, push, deploy, publish or update issues.
System Change Engineering fits situations like: assessing an RFC, design or feature proposal before building it; judging whether a new field, event or API has a real consumer; planning a migration, dependency change or refactor that needs rollback thinking.
Run `npx skills add bytedance/deer-flow --skill engineer-system-change -a claude-code`. Or copy the skill folder (.agent/skills/engineer-system-change in bytedance/deer-flow) into .claude/skills/engineer-system-change in your project. Claude Code loads it when a task matches its description.
Run `npx skills add bytedance/deer-flow --skill engineer-system-change -a codex`. Or copy the skill folder (.agent/skills/engineer-system-change in bytedance/deer-flow) into .agents/skills/engineer-system-change in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add bytedance/deer-flow --skill engineer-system-change -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/engineer-system-change, .gemini/skills/engineer-system-change, .github/skills/engineer-system-change and .opencode/skills/engineer-system-change in your project.
SKILL.md names no scripts, command-line tools or credentials: System Change Engineering is instructions for the agent only.
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.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
System Change Engineering is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.5k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with System Change Engineering: Migrate Core Code to Submodules (tinyhumansai/openhuman, 42k stars), ast-grep Structural Search (code-yeongyu/oh-my-openagent, 70k stars), Architecture Patterns (KartikLabhshetwar/better-shot, 2.4k stars) and ast-grep Codemod Reference (warp-drive-data/warp-drive, 3.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
bytedance (a GitHub organization) maintains it in bytedance/deer-flow, which has 83,561 GitHub stars. The repository holds 23 skills in this directory. The repository was last updated on October 9, 2026.
Source: bytedance/deer-flow on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.