最新资讯
wired.com 聊天机器人广告时代到来:哪些做法有效、哪些无效 techmeme.com METR:Anthropic 删减了评估报告中最具信息量的证据 unite.ai 微软借助 AI 修复更多 Windows 漏洞,但补丁部署仍滞后 bloomberg.com Cloudflare 上调年度利润预期,AI 推动网络需求 theinformation.com Anthropic 为 Claude 推出个人理财功能 theinformation.com Airbnb 披露 Chesky 隐秘 AI 初创公司的新细节 engadget.com Google 将停用 Firebase Studio,引导开发者转向 Antigravity 与 AI Studio www.youtube.com 别再给 AI Agent 发 API Key:Keycard 与 Temporal 谈 Agent 安全与可恢复执行 unite.ai Kajima 全面部署搭载 FieldAI 自主软件的施工机器人 businessinsider.com Anthropic 相关 AI 报告引发关注:METR 发布首份驻场研究 dev.to Pando:OpenAI 如何通过放宽跨分支一致性,让 Git 支撑 Agent 速度的推送 dev.to 为能花钱或签发的 Agent 做威胁建模
多元动态
登录 注册
智能体 github.com · @pbakaus

Impeccable CLI v4.8.0 发布:新增 GitHub Actions 注解与规则列表

原文 我的收藏

Impeccable 发布 cli-v4.8.0。新增 --github 将每条检测结果以注解形式输出到对应代码行,--list-rules 可在不扫描的情况下以文本或 JSON 列出全部规则;install 支持 devin、windsurf,并在项目含 .replit 文件时识别 Replit Agent。安装与更新改为等待空闲连接而非固定 120 秒,无网络更新时保留已有 skills,引擎二进制运行前按包内提交的 digest 校验。引擎 0.1.18 加入硬偏移阴影提示及 skill v4.8.0 的准确性修复。

AI推荐理由 官方 release notes 信息密度较高:新增 --github 注解输出、--list-rules 规则列表、install 支持 devin/windsurf 并识别 Replit Agent,安装改为等待空闲连接、引擎二进制按包内 digest 校验。属于面向 AI 编码代理的前端设计检查工具迭代,对使用 Claude/Devin 等代理做前端开发的开发者有实际用途;但为小项目版本更新,影响面有限,且未提供效果数据。

62

正文

Official release notes (https://github.com/pbakaus/impeccable/releases/tag/cli-v4.8.0) - **GitHub Actions annotations.** `--github` prints each finding as an annotation on the line that caused it. Thanks to @mvanhorn. `npx impeccable@latest detect --github src/` - **The rule list.** `--list-rules` prints every rule without scanning, as text or `--json`. - **Devin and Replit Agent.** `install` accepts `devin` and `windsurf`, and names Replit Agent when a project has a `.replit` file. - **Steadier installs.** `install` and `update` wait on an idle connection instead of a fixed 120 seconds, and an update with no network keeps the skills you have. The engine binary is checked against digests committed with the package before it runs. - **The current detector.** Engine 0.1.18 brings the hard offset shadow advisory and every accuracy fix in skill v4.8.0. Repository README (current repository documentation, not release changes) # Impeccable Design guidance for AI coding agents. 1 skill, 24 commands, live browser iteration, and 62 deterministic detector rules for AI-generated frontend design. > **Quick start:** From your project root, run `npx impeccable install`, then run `/impeccable init` inside your AI coding tool. Full docs: [impeccable.style](https://impeccable.style). ## Why Impeccable? Anthropic's [frontend-design](https://github.com/anthropics/skills/tree/main/skills/frontend-design) was the first widely-used design skill for Claude. Impeccable started from there. Every model trained on the same SaaS templates. Skip the guidance and you get the same handful of tells on every project: Inter for everything, purple-to-blue gradients, cards nested in cards, gray text on colored backgrounds, the rounded-square icon tile above every heading. Impeccable adds: - **One setup flow.** `/impeccable init` records durable product truth in `PRODUCT.md`, so later commands know the audience, purpose, operating context, constraints, voice, and evidence without confusing those facts with surface-level visual direction. - **24 commands.** A shared design vocabulary with your AI: `polish`, `audit`, `critique`, `distill`, `animate`, `bolder`, `quieter`, and more. - **62 deterministic detector rules** plus LLM-only critique checks. The CLI and browser extension run the deterministic rules with no LLM and no API key. ## What's Included ### The Skill: impeccable The skill installs as one command: ```bash /impeccable ``` Start every new project with: ```bash /impeccable init ``` `init` inspects the project, asks only for material gaps in durable product truth, and writes `PRODUCT.md`. Visitor mode and visual direction are chosen later for each surface; incumbent or newly built visual systems are recorded separately in `DESIGN.md`. ### 24 Commands All commands are accessed through `/impeccable`: | Command | What it does | |---------|--------------| | `/impeccable craft` | Full shape-then-build flow with visual iteration | | `/impeccable init` | One-time setup: gather durable product context, write PRODUCT.md, configure live mode when applicable, recommend next steps | | `/impeccable document` | Generate root DESIGN.md from existing project code | | `/impeccable extract` | Pull reusable components and tokens into the design system | | `/impeccable shape` | Plan UX/UI before writing code | | `/impeccable critique` | UX design review: hierarchy, clarity, emotional resonance | | `/impeccable audit` | Run technical quality checks (a11y, performance, responsive) | | `/impeccable polish` | Final pass, design system alignment, and shipping readiness | | `/impeccable bolder` | Amplify boring designs | | `/impeccable quieter` | Tone down overly bold designs | | `/impeccable distill` | Strip to essence | | `/impeccable harden` | Error handling, i18n, text overflow, edge cases | | `/impeccable onboard` | First-run flows, empty states, activation paths | | `/impeccable animate` | Add purposeful motion | | `/impeccable colorize` | Introduce strategic color | | `/impeccable typeset` | Fix font choices, hierarchy, sizing | | `/impeccable layout` | Fix layout, spacing, visual rhythm | | `/impeccable delight` | Add moments of joy | | `/impeccable overdrive` | Add technically extraordinary effects | | `/impeccable clarify` | Improve unclear UX copy | | `/impeccable adapt` | Adapt for different devices | | `/impeccable optimize` | Performance improvements | | `/impeccable live` | Visual variant mode: iterate on elements in the browser | | `/impeccable generate` | Generate variants of a named element in the live browser, no manual picking | Use `/impeccable pin ` to create standalone shortcuts (e.g., `pin audit` creates `/audit`). #### Usage Examples ``` /impeccable audit blog # Audit blog hub + post pages /impeccable critique landing # UX design review /impeccable polish settings # Final pass before shipping /impeccable harden checkout # Add error handling + edge cases ``` Or use `/impeccable` directly with a description: ``` /impeccable redo this hero section ``` ### Anti-Patterns The skill includes explicit guidance on what to avoid: - Don't use overused fonts (Arial, Inter, system defaults) - Don't use gray text on colored backgrounds - Don't use pure black/gray (always tint) - Don't wrap everything in cards or nest cards inside cards - Don't use bounce/elastic easing (feels dated) ## See It In Action Visit [the Neo Mirai case study](https://impeccable.style/cases/neo-mirai) to see a before/after case study of a real project transformed with Impeccable commands. ## Installation The skill needs no runtime of its own. Every skill copy ships a small launcher (`scripts/impeccable`, plus `impeccable.cmd` for Windows) that runs the Impeccable engine, a self-contained binary that either sits next to the launcher or is downloaded once on first run into `~/.impeccable/bin/`. Node is only involved if you use the `npx impeccable` installer, which is a shim around the same binary; the manual and Git options below work without it. ### Option 1: CLI installer (Recommended) From the root of your project, run: ```bash npx impeccable install ``` This shows the harness folders or installed CLIs it detected (for example `~/.claude`, `~/.codex`, `~/.grok`, `~/.hermes`, `~/.veto`, or project-local `.cursor`), lets you keep the detected set or customize providers, then asks whether to install into the current project or globally. Use `--providers=claude,codex,replit,cursor,grok,hermes,veto` and `--scope=project|global` to skip those choices in scripts. On Claude Code, Cursor, Codex, GitHub Copilot, and Grok Build, it also installs the provider-native hook manifest for the current project. Veto receives the packaged skill under `~/.veto/skills/` and does not run native Impeccable edit hooks. Works with Cursor, Claude Code, Gemini CLI, Codex CLI, Replit Agent, Grok Build, Hermes Agent, Veto, and every other supported tool. Reload your harness afterward. To refresh an existing install, run: ```bash npx impeccable update ``` Codex users should open `/hooks` after install or update and approve the project hook when prompted. Codex tracks trust by hook definition, so updates that change `.codex/hooks.json` can require approval again. Grok Build users need project folder trust (`/hooks-trust` or launch with `--trust`) before `.grok/hooks/` scripts run. See [Allow the hook in your harness](https://impeccable.style/docs/hooks#allow-the-hook-in-your-harness) for harness-specific trust and verification steps. ### Option 2: Git Submodule For teams that want to keep Impeccable vendored and updated through Git, add this repo as a submodule and link the compiled provider build into your harness folders: ```bash git submodule add https://github.com/pbakaus/impeccable .impeccable npx impeccable link --source=.impeccable --providers=claude,cursor git add .gitmodules .impeccable .claude .cursor git commit -m "Add Impeccable skills" ``` Use the providers your project needs, for example `claude`, `cursor`, `gemini`, `codex`, `github`, `grok`, `devin`, `hermes`, `opencode`, `pi`, `qoder`, `trae`, `trae-cn`, `rovo-dev`, `vibe`, or `veto`. The command links individual skill folders from `.impeccable/dist/universal/` and leaves existing real skill directories untouched unless you pass `--force`. To update later: ```bash git submodule update --remote .impeccable npx impeccable link --source=.impeccable --providers=claude,cursor ``` ### Option 3: Plugin install **GitHub Copilot in VS Code:** Install [Impeccable from the Visual Studio Marketplace](https://marketplace.visualstudio.com/items?itemName=renaissance-geek.impeccable), or run: ```bash code --install-extension renaissance-geek.impeccable ``` Requires VS Code 1.109.3+, Copilot Chat access, and a trusted local workspace. Open Chat in Agent mode and try `/impeccable polish`. This skill-only extension does not install automatic hooks; avoid a duplicate Impeccable skill in the same workspace/profile. See [VS Code distribution details](docs/VSCODE-EXTENSION.md). **Claude Code:** ```bash /plugin marketplace add pbakaus/impeccable ``` > Claude Code only. After adding the marketplace, open `/plugin` and install Impeccable from the list. **Grok Build:** ```bash grok plugin install pbakaus/impeccable#plugin --trust ``` > Grok Build only. The `#plugin` suffix installs the slim plugin package (skills, agents, and hooks) instead of the full monorepo. Then run `/impeccable init` in a Grok session. Project-scoped installs via `npx impeccable install --providers=grok` also work and write `.grok/skills/` plus `.grok/hooks/impeccable.json`. ### Option 4: Download from Website Visit [impeccable.style](https://impeccable.style), download the ZIP for your tool, and extract to your project. ### Option 5: Copy from Repository **Cursor:** ```bash cp -r dist/cursor/.cursor your-project/ ``` > **Note:** Cursor skills require setup: > 1. Switch to Nightly channel in Cursor Settings → Beta > 2. Enable Agent Skills in Cursor Settings → Rules > > [Learn more about Cursor skills](https://cursor.com/docs/context/skills) **Claude Code:** ```bash # Project-specific cp -r dist/claude-code/.claude your-project/ # Or global (applies to all projects) cp -r dist/claude-code/.claude/* ~/.claude/ ``` **OpenCode:** ```bash cp -r dist/opencode/.opencode your-project/ ``` **DeepSeek Harness:** ```bash # Project-specific cp -r dist/dsh/.dsh your-project/ # Or global (applies to all projects) mkdir -p "${DSH_HOME:-$HOME/.dsh}/skills" cp -r dist/dsh/.dsh/skills/* "${DSH_HOME:-$HOME/.dsh}/skills/" ``` The CLI honors `DSH_HOME` only when it resolves inside your home directory (or to home itself); otherwise it uses `~/.dsh`. An outside-home manual copy is not managed by `impeccable install/update`. **Devin:** ```bash # Project-specific (Devin web, CLI, and Desktop all read .devin/skills/) cp -r dist/devin/.devin your-project/ # Or global (Devin CLI and Desktop; use %APPDATA%\devin\skills on Windows) mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/devin/skills" cp -r dist/devin/.devin/skills/* "${XDG_CONFIG_HOME:-$HOME/.config}/devin/skills/" ``` **Hermes Agent:** ```bash # Global (applies to all projects; uses the active profile, or ~/.hermes by default) cp -r dist/hermes/.hermes/skills/* "${HERMES_HOME:-$HOME/.hermes}/skills/" # Or project-specific cp -r dist/hermes/.hermes your-project/ ``` > **Note:** Hermes gates project-local skills behind a per-repo trust decision > (they are procedure documents, so auto-loading them from any cloned repo is > treated as a prompt-injection vector). After a project-scoped install, run > `hermes skills trust` once from the project root. Global installs into the > active `$HERMES_HOME/skills/` (or `~/.hermes/skills/` when unset) load without > a trust step. `/impeccable ` then > routes through the skill's Commands table; the design hook does not install > on Hermes (no hook surface). > > [Learn more about Hermes skills](https://hermes-agent.nousresearch.com/docs/user-guide/features/skills) **Pi:** ```bash cp -r dist/pi/.pi your-project/ ``` **Gemini CLI:** ```bash cp -r dist/gemini/.gemini your-project/ ``` > **Note:** Gemini CLI skills require setup: > 1. Install preview version: `npm i -g @google/gemini-cli@preview` > 2. Run `/settings` and enable "Skills" > 3. Run `/skills list` to verify installation > > [Learn more about Gemini CLI skills](https://geminicli.com/docs/cli/skills/) **Codex CLI:** ```bash # Project-local cp -r dist/agents/.agents your-project/ mkdir -p your-project/.codex cp dist/codex/.codex/hooks.json your-project/.codex/hooks.json # Or install the skill user-wide. Copy .codex/hooks.json into each project # where you want the design hook to run. mkdir -p ~/.agents/skills cp -r dist/agents/.agents/skills/* ~/.agents/skills/ ``` > The asset-producer subagent ships nested inside the skill's own `agents/` folder, which Codex auto-discovers. No separate `.codex/agents/` copy is needed. The hook is project-local because Codex discovers hooks from `.codex/hooks.json` next to trusted project config. **GitHub Copilot:** ```bash cp -r dist/github/.github your-project/ ``` **Trae:** ```bash # Trae China (domestic version) cp -r dist/trae/.trae-cn/skills/* ~/.trae-cn/skills/ # Trae International cp -r dist/trae/.trae/skills/* ~/.trae/skills/ ``` > **Note:** Trae has two versions with different config directories: > - **Trae China**: `~/.trae-cn/skills/` > - **Trae International**: `~/.trae/skills/` > > After copying, restart Trae IDE to activate the skills. **Rovo Dev:** ```bash # Project-specific cp -r dist/rovo-dev/.rovodev your-project/ # Or global (applies to all projects) cp -r dist/rovo-dev/.rovodev/skills/* ~/.rovodev/skills/ ``` **Qoder:** ```bash # Project-specific cp -r dist/qoder/.qoder your-project/ # Or global (applies to all projects) cp -r dist/qoder/.qoder/skills/* ~/.qoder/skills/ ``` **Mistral Vibe:** ```bash # Project-specific cp -r dist/vibe/.vibe your-project/ # Or global (applies to all projects) cp -r dist/vibe/.vibe/skills/* ~/.vibe/skills/ ``` **Grok Build:** ```bash # Project-specific cp -r dist/grok/.grok your-project/ # Or global (applies to all projects) cp -r dist/grok/.grok/skills/* ~/.grok/skills/ ``` > Prefer `npx impeccable install --providers=grok` or `grok plugin install pbakaus/impeccable#plugin --trust` so the design hook installs too. Project hooks need `/hooks-trust` (or `--trust`) once per folder. **Google Antigravity:** ```bash # Project-specific cp -r dist/antigravity/.agent your-project/ # Or global (applies to all projects) mkdir -p ~/.gemini/config/skills cp -r dist/antigravity/.agent/skills/* ~/.gemini/config/skills/ ``` ## Usage Once installed, every command runs through the single `/impeccable` skill: ``` /impeccable audit # Find issues /impeccable polish # Final cleanup /impeccable distill # Remove complexity /impeccable critique # Full design review ``` Type `/impeccable` alone to see the full command list. Most commands accept an optional argument to focus on a specific area: ``` /impeccable audit the header /impeccable polish the checkout form ``` If you reach for one command often, pin it with `/impeccable pin audit` to get `/audit` as a standalone shortcut. **Note:** Codex uses skills here, not `/prompts:` commands. Open `/skills` or type `$impeccable`. Repo-local installs live in `.agents/skills/`; user-wide installs live in `~/.agents/skills/`. GitHub Copilot uses `.github/skills/`. Restart the tool if a newly installed skill does not appear. ## Keeping `.impeccable` out of git As you run commands, Impeccable writes working files under `.impeccable/`: critique and polish screenshots, live-mode session and preview state, runtime caches, and per-developer config. Most of it is ephemeral and should not be committed, while a few files are shared project artifacts that belong in the repo. Add this block to your project's `.gitignore`: ```gitignore # impeccable-ignore-start # Ephemeral output, runtime state, and per-dev overrides. # The **/ prefix covers .impeccable at the repo root or in a nested workspace. # Shared artifacts stay tracked: config.json, live/config.json, # design.json, surfaces/*.md, critique/*.md. **/.impeccable/config.local.json **/.impeccable/hook.cache.json **/.impeccable/hook.pending.json **/.impeccable/*.png **/.impeccable/review/ **/.impeccable/questions/ **/.impeccable/live/server.json **/.impeccable/live/sessions/ **/.impeccable/live/previews/ **/.impeccable/live/annotations/ **/.impeccable/live/cache/ **/.impeccable/live/manual-edit-apply-transaction.json **/.impeccable/live/manual-edit-events.jsonl **/.impeccable/live/manual-edit-evidence/ **/.impeccable/live/pending-manual-edits.json **/.impeccable/live/deferred-svelte-component-accepts.json **/.impeccable/live/*.png # impeccable-ignore-end ``` The block is wrapped in `# impeccable-ignore-start` / `# impeccable-ignore-end` markers so you can recognize and refresh it later. The `**/` prefix makes each pattern match whether the active project's `.impeccable/` directory is at the repository root or under a nested workspace path like `apps/web/`. **Keep these tracked** (they are shared project artifacts, do not add them to `.gitignore`): - `.impeccable/config.json` (unified shared config) - `.impeccable/live/config.json` (live-mode framework wiring) - `.impeccable/design.json` (shared design spec) - `.impeccable/surfaces/*.md` (route- or artifact-specific strategy and direction contracts) - `.impeccable/critique/*.md` (review reports) Impeccable also keeps its own `.gitignore` in the folders that hold decision-round state: `.impeccable/questions/` and `.impeccable/mocks/worlds/` ignore everything in them, and `.impeccable/build/` ignores `state.json`. That keeps new runtime files out of commits even in a project without the block above. A `.gitignore` cannot untrack a file git already tracks, though: when one of these files was committed earlier, the next roll prints a one-time notice with the fix, `git rm -r --cached .impeccable/questions` (plus any other folder it names), and writes its roll record to an untracked file until then. If an ephemeral file (a screenshot, `config.local.json`) was committed before you added the block, `.gitignore` will not untrack it automatically. Run `git rm --cached ` to stop tracking it without deleting your local copy. ## Telemetry When a new design starts, the skill asks the roll API at impeccable.style to deal a hand of visual worlds from the catalog. That request is the feature, so it always happens. Unless you opt out, it also feeds an anonymous record of which hand was shown and which card won, which is how the catalog learns what works. What is sent, on the roll request and on the choice that follows it: - the roll key (a random value per decision round), scope (direction or surface), visitor mode, and re-roll round - the catalog revision the hand came from, and on the choice the kind of card that won (assigned, pick, challenger, canon, or a re-roll), its catalog id when a catalog world won, and its position on the page - the client version, whether the choice came from the decision page or the agent, and a random id for that choice so a report sent twice is counted once Never sent: your project's name, files, code, PRODUCT.md, or the names of the directions your agent wrote. Committed files such as surface briefs record only a seed reference, a hash of the roll key under a random salt kept in `~/.impeccable/seed-salt`, never the key itself. If no salt can be kept on a machine, the brief records no seed at all rather than a weaker hash. Roll keys are 128 random bits. If you pass your own short key with `--from`, its reference is easy to guess, so do not rely on it to keep that key private. To turn it off, run `npx impeccable telemetry off` (stored in `~/.impeccable/config.json`), or set `DO_NOT_TRACK=1` or `IMPECCABLE_NO_TELEMETRY=1`. A project can opt everyone out with `"telemetry": false` in `.impeccable/config.json`. `npx impeccable telemetry status` shows the current state. Opted out, the roll still works and the API is told not to record it. Details: https://impeccable.style/privacy ## Design hook On Claude Code, GitHub Copilot, Codex, Cursor, and Grok Build, `npx impeccable install` and `npx impeccable update` install a provider-native hook manifest along with the skill payload. The hook runs the Impeccable design detector on direct UI file edits and surfaces findings back into the agent flow. Claude Code, GitHub Copilot, Codex, and Cursor surface findings after the edit (and run a deeper pass on Stop where supported). Grok Build scans after the edit to warm Stop, then surfaces on Stop; PostToolUse stdout never reaches the model. Installed hook surfaces: - Claude Code: `.claude/settings.local.json` (gitignored, machine-local) runs `${CLAUDE_PROJECT_DIR}/.claude/skills/impeccable/scripts/impeccable hook`. A hook moved into the shared `settings.json` is honored in place. - GitHub Copilot: `.github/hooks/impeccable.json` (committed, shared by the Copilot CLI and the cloud agent) runs `.github/skills/impeccable/scripts/impeccable hook`. The Copilot CLI activates it once the file is on the repository's default branch and the folder is trusted. - Cursor: `.cursor/hooks.json` runs `.cursor/skills/impeccable/scripts/impeccable hook` on `postToolUse` for file writes. Projects set up with the older `preToolUse` write gate keep working; `npx impeccable update` moves them to the post-edit hook. - Codex: `.codex/hooks.json` runs `.agents/skills/impeccable/scripts/impeccable hook`, with a `commandWindows` sibling that calls `impeccable.cmd` for cmd.exe. - Grok Build: `.grok/hooks/impeccable.json` runs `.grok/skills/impeccable/scripts/impeccable hook`. Requires `/hooks-trust` or `--trust`. Findings reach the model on Stop, not after each edit. Every command goes through the launcher shipped in the skill's `scripts/` directory (`impeccable`, or `impeccable.cmd` on Windows), guarded so a missing launcher is a silent no-op. The launcher runs the engine binary that ships next to it, or downloads the pinned version once into `~/.impeccable/bin/`. No Node or other runtime is required for the hook or the skill. In Claude Code, installed command hooks run independently of model-tool approval. The first edit or Stop event can therefore download and cache the engine even if the session denies the model's launcher command. Review installed hooks before unattended runs; to disable all Claude Code hooks for a run, pass `--settings '{"disableAllHooks": true}'`. See [Claude Code's hook security guidance](https://code.claude.com/docs/en/hooks#security-considerations). The installer preserves unrelated hook entries and settings. If a hook manifest is malformed, install/update aborts by default; rerun with `--force` to back up the malformed file as `.bak` and replace it. On an interactive `install`/`update`, Impeccable explains the hook and offers to install it (default yes). Your choice is remembered per-developer in the gitignored `.impeccable/config.local.json`, so you are not asked again; `--no-hooks` skips it for that run without recording anything. Hook lifecycle settings live under the `hook` key of `.impeccable/config.json`; detector ignores live under `detector`, shared by `/impeccable hooks` and `npx impeccable detect`. For debugging, set `hook.auditLog` in `.impeccable/config.json` to a path (or the legacy `IMPECCABLE_HOOK_LOG` env var) to write one NDJSON line per hook invocation. Leave it unset for normal use. ## Build path: comp-first or code-first When a new surface gets designed, Impeccable either generates a full-fidelity comp first and builds to match it, or builds straight in code with the ambition written into a development-only direction contract in the surface brief and checked at the finish. Comp-first composes bolder and takes longer; code-first is leaner and faster. The choice covers landing pages and showcase surfaces. App screens and documents are built code-first either way, because they come out better built than pictured. `/impeccable init` asks once and records the answer as `buildPath` in `.impeccable/config.json`: ```json { "buildPath": "comp" } ``` The values are `comp` and `code`, and nothing else is read. Set it in the gitignored `.impeccable/config.local.json` to override the team's committed value on one machine, which is what you want when your harness has no image generation. In a monorepo, commit it once at the repo root and any workspace that wants something else sets its own. The choice appears at all only where image generation is available, since without it there is nothing to comp. You do not have to re-run `init` to set it on a project that predates the setting, and you do not have to edit the file by ha

来源报道 · 1 篇 · 以下链接均前往原始媒体

← 返回精选动态 原文

更多内容