Skip to content

Pass --yes and --quiet to the Skills CLI#952

Merged
yamcodes merged 7 commits into
mainfrom
951-pass---yes-and---quiet-to-the-underlying-skill-process
May 12, 2026
Merged

Pass --yes and --quiet to the Skills CLI#952
yamcodes merged 7 commits into
mainfrom
951-pass---yes-and---quiet-to-the-underlying-skill-process

Conversation

@yamcodes
Copy link
Copy Markdown
Owner

@yamcodes yamcodes commented May 12, 2026

Summary by CodeRabbit

  • New Features

    • CLI forwards --yes to subprocesses when provided and runs skill installs in quiet mode that suppresses output unless the command fails (buffered logs shown on failure).
  • Documentation

    • Updated CLI docs and help text for --yes, --quiet, --json, --agent, and --help to reflect the new behaviors and messaging.
  • Tests

    • Added tests for flag propagation and quiet-mode success/failure logging.
  • Chores

    • Release metadata updated for the CLI patch.

Review Change Stack

@yamcodes yamcodes linked an issue May 12, 2026 that may be closed by this pull request
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 12, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 46bc5aa4-6e61-45eb-8dfa-58af6621a26e

📥 Commits

Reviewing files that changed from the base of the PR and between 30968a0 and d1e1ce9.

📒 Files selected for processing (3)
  • .changeset/social-geese-jog.md
  • packages/cli/src/commands/init.test.ts
  • packages/cli/src/commands/init.ts
✅ Files skipped from review due to trivial changes (2)
  • .changeset/social-geese-jog.md
  • packages/cli/src/commands/init.test.ts

Walkthrough

The PR forwards --yes to child skill processes only when provided, implements quiet-mode execution by piping and buffering child stdout/stderr, and exposes buffered logs only when the child process fails.

Changes

Quiet Skill Process Execution with Conditional --yes Flag

Layer / File(s) Summary
Design and specification documentation
openspec/changes/skill-process-yes-quiet-flags/*
Five new spec-driven documents define behavior: .openspec.yaml, design.md, proposal.md, spec.md, and tasks.md specifying piped stdio buffering in quiet mode and conditional --yes forwarding.
User-facing documentation and help text
packages/cli/src/commands/help.ts, apps/www/content/docs/cli/index.mdx
CLI help and docs updated to describe that --yes is forwarded to skill subprocesses and --quiet suppresses output while capturing logs to show only on failure; help formatting adjusted.
Release notes / changeset
.changeset/social-geese-jog.md
Changeset entry documents the CLI passthrough behavior for --yes and --quiet for a patch release.
InitCommand execution helper and --yes forwarding
packages/cli/src/commands/init.ts
Adds a private execute() helper that uses shell:true, conditionally sets stdio: 'pipe' when quiet to buffer stdout/stderr, resolves on exit code 0, rejects with synthesized errors including buffered logs on failure; init scaffolding appends --yes only when provided and calls this.execute(...).
InitCommand test suite
packages/cli/src/commands/init.test.ts
Vitest suite with mocked spawn and prompts verifies --yes propagation, stdio: "pipe" under --quiet, inclusion of buffered stderr in fatal logs on quiet-mode failures, truncation of large buffers, and termination-by-signal messaging.

Sequence Diagram

sequenceDiagram
  participant User
  participant InitCommand
  participant Execute as execute()
  participant ChildProcess
  participant Logger

  User->>InitCommand: run init [--quiet] [--yes]
  InitCommand->>InitCommand: build command (append --yes if provided)
  InitCommand->>Execute: execute(command)
  Execute->>ChildProcess: spawn(command, shell:true, stdio: pipe if quiet)
  
  alt Child exits 0
    ChildProcess-->>Execute: exit 0
    Execute-->>InitCommand: resolve()
    InitCommand->>Logger: log success (no buffered output shown)
  else Child exits non-zero or signal
    ChildProcess-->>Execute: exit non-zero / signal + buffered stdout/stderr
    Execute-->>InitCommand: reject(error with buffered logs)
    InitCommand->>Logger: logger.fatal(error message with captured logs)
  end
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Possibly related PRs

Suggested labels

skills

Poem

🐰 Through quiet pipes and whispered skills I tread,
I pass the --yes where timid prompts once spread,
I hush the noise and buffer every sigh,
Then only show the cries when processes die.
A carrot cheer for spec and code — hop, hop, hooray! 🥕

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: passing --yes and --quiet flags to the Skills CLI process, which is the central focus of all modifications across documentation, specs, and implementation code.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 951-pass---yes-and---quiet-to-the-underlying-skill-process

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 12, 2026

🦋 Changeset detected

Latest commit: d1e1ce9

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@arkenv/cli Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added the docs Improvements or additions to documentation label May 12, 2026
@yamcodes
Copy link
Copy Markdown
Owner Author

The plan is too vague. It's not clear that --yes should be passed ONLY when --yes (or -y of course) is provided in the input. Also, I could use more details on the execution in general including of when --quiet is passed.

@yamcodes
Copy link
Copy Markdown
Owner Author

Plan looks good.

@yamcodes yamcodes marked this pull request as ready for review May 12, 2026 13:56
@github-actions github-actions Bot added www Improvements or additions to arkenv.js.org tests This issue or PR is about adding, removing or changing tests @arkenv/cli Issues or Pull Requests involving the ArkEnv CLI labels May 12, 2026
@arkenv-bot
Copy link
Copy Markdown
Contributor

arkenv-bot Bot commented May 12, 2026

🤖 Hi @yamcodes, I've received your request, and I'm working on it now! You can track my progress in the logs for more details.

Copy link
Copy Markdown
Owner Author

@yamcodes yamcodes left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but this is missing a changeset. Also would expect a touch on the docs here.

@arkenv-bot
Copy link
Copy Markdown
Contributor

arkenv-bot Bot commented May 12, 2026

🤖 I'm sorry @yamcodes, but I was unable to process your request. Please see the logs for more details.

@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented May 12, 2026

Open in StackBlitz

arkenv

npm i https://pkg.pr.new/arkenv@952

@arkenv/bun-plugin

npm i https://pkg.pr.new/@arkenv/bun-plugin@952

@arkenv/cli

npm i https://pkg.pr.new/@arkenv/cli@952

@arkenv/fumadocs-ui

npm i https://pkg.pr.new/@arkenv/fumadocs-ui@952

@arkenv/vite-plugin

npm i https://pkg.pr.new/@arkenv/vite-plugin@952

commit: d1e1ce9

@arkenv-bot
Copy link
Copy Markdown
Contributor

arkenv-bot Bot commented May 12, 2026

📦 Bundle Size Report

No results found

All size limits passed!

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@openspec/changes/skill-process-yes-quiet-flags/design.md`:
- Around line 24-25: The Risks section in design.md contains a duplicated
sentence fragment ("produce gigabytes of output, so this risk is acceptable for
now.") repeated across the Memory consumption paragraph; remove the duplicate
trailing fragment on the second line so the paragraph reads once and is not
corrupted (edit the Memory consumption paragraph in
openspec/changes/skill-process-yes-quiet-flags/design.md to delete the repeated
fragment).

In `@packages/cli/src/commands/init.ts`:
- Around line 171-180: The current child process close handler
(child.on("close", (code: number | null) => { ... })) treats a null code the
same as a numeric exit code and produces "Command failed with code null"; change
the logic to capture termination signal and include it in the error message:
listen to the child's "exit" event signature (child.on("exit", (code, signal) =>
{ ... })) or store the signal in an outer variable and then in the existing
close handler check if code === null and append `Signal: ${signal}` (alongside
existing stdout/stderr handling and isQuiet) before calling reject(new
Error(message)); ensure references to isQuiet, stdout, stderr and the reject(new
Error(message)) path are updated so failures show either the numeric code or the
terminating signal.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 5fc05b7a-7544-4d47-9f0a-7f4f806b9cc5

📥 Commits

Reviewing files that changed from the base of the PR and between f736591 and 05c3188.

📒 Files selected for processing (9)
  • apps/www/content/docs/cli/index.mdx
  • openspec/changes/skill-process-yes-quiet-flags/.openspec.yaml
  • openspec/changes/skill-process-yes-quiet-flags/design.md
  • openspec/changes/skill-process-yes-quiet-flags/proposal.md
  • openspec/changes/skill-process-yes-quiet-flags/specs/skill-quiet-execution/spec.md
  • openspec/changes/skill-process-yes-quiet-flags/tasks.md
  • packages/cli/src/commands/help.ts
  • packages/cli/src/commands/init.test.ts
  • packages/cli/src/commands/init.ts

Comment thread openspec/changes/skill-process-yes-quiet-flags/design.md Outdated
Comment thread packages/cli/src/commands/init.ts Outdated
@arkenv-bot
Copy link
Copy Markdown
Contributor

arkenv-bot Bot commented May 12, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (Asia/Almaty)
arkenv Ready Ready Preview, Comment May 12 2026, 7:20 PM (Asia/Almaty)

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.changeset/social-geese-jog.md:
- Line 15: Fix the typo in the user-facing release note by locating the
occurrence of the misspelled word "recommnded" in the release note text and
replace it with "recommended" so the sentence reads correctly (ensuring the
surrounding sentence about avoiding prompts in subprocesses like the Vercel
Skills process remains unchanged).

In `@packages/cli/src/commands/init.ts`:
- Around line 159-168: The quiet-mode log buffering (variables stdout/stderr
collected from child.stdout/child.stderr when isQuiet is true) can grow
unbounded; cap these buffers to a fixed size (e.g., keep only the last N
bytes/chars) before appending to avoid unbounded memory growth on large failing
installs. Modify the handlers attached to child.stdout?.on("data", ...) and
child.stderr?.on("data", ...) to append new data but trim the buffer to the
configured max (or rotate to keep the tail), and reuse the same max logic for
the handlers around lines 179–181 so both stdout and stderr are capped
consistently.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: cf8749d3-1fa7-4ee2-ac4d-bcb1bed06830

📥 Commits

Reviewing files that changed from the base of the PR and between 05c3188 and 30968a0.

📒 Files selected for processing (4)
  • .changeset/social-geese-jog.md
  • openspec/changes/skill-process-yes-quiet-flags/design.md
  • packages/cli/src/commands/init.test.ts
  • packages/cli/src/commands/init.ts
✅ Files skipped from review due to trivial changes (1)
  • openspec/changes/skill-process-yes-quiet-flags/design.md

Comment thread .changeset/social-geese-jog.md Outdated
Comment thread packages/cli/src/commands/init.ts
@yamcodes yamcodes merged commit 10cbb7d into main May 12, 2026
25 checks passed
@yamcodes yamcodes deleted the 951-pass---yes-and---quiet-to-the-underlying-skill-process branch May 12, 2026 14:24
@arkenv-bot arkenv-bot Bot mentioned this pull request May 12, 2026
yamcodes pushed a commit that referenced this pull request May 12, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @arkenv/cli@0.0.5

### Patch Changes

- #### Add agent skill support
_[`#945`](#945)
[`63d6237`](63d6237)
[@yamcodes](https://github.com/yamcodes)_

The CLI now has a new `--agent` flag that lets the ArkEnv agent skill
interact with it in a token-sensitive way. The skill has been updated to
support this new mode.

Also, the CLI will now suggest to install the agent skill for you when
in non-`--agent` mode.

    Read more in the [ArkEnv CLI docs](https://arkenv.js.org/docs/cli).

- #### Improve "done" message text
_[`#954`](#954)
[`fe10ef4`](fe10ef4)
[@yamcodes](https://github.com/yamcodes)_

The output now clearly distinguishes between the local scaffolding and
the AI-powered refinement:

            1 │
2 ◇ Next steps
─────────────────────────────────────────────────────────────────╮
3 │ │
4 │ 1. Check ./src/env.ts and refine your environment schema. │
5 │ 2. Import and use: import { env } from "./src/env" │
6 │ 3. (Recommended) Install the AI skill: pnpm dlx skills add
yamcodes/arkenv │
7 │ Then run /arkenv inside your AI assistant to finish. │
8 │ │
9
├──────────────────────────────────────────────────────────────────────────────╯
           10 │
           11 └  ⛯ ArkEnv scaffolding complete. Happy coding!

- #### Install framework plugins
_[`#948`](#948)
[`1dca74c`](1dca74c)
[@yamcodes](https://github.com/yamcodes)_

The ArkEnv CLI now installs framework plugins as part of the scaffolding
process if a relevant runtime/framework is selected.

- #### Passthrough `--yes` and `--quiet` to underlying process
_[`#952`](#952)
[`10cbb7d`](10cbb7d)
[@yamcodes](https://github.com/yamcodes)_

The ArkEnv CLI will now pass the flags `--yes` and `--quiet` to
underlying processes.

    This means that if you run:

    ```sh
    pnx @arkenv/cli init --yes
    ```

It would now use the recommended settings and avoid prompts even in
sub-processes like the Vercel Skills process to add the ArkEnv skill.

    Similarly, if you run:

    ```sh
    pnx @arkenv/cli init --quiet
    ```

You will not be exposed to the underlying Vercel Skills output, except
for errors which are buffered in memory. (Resolves on exit code 0,
discarding buffered output on success)

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

@arkenv/cli Issues or Pull Requests involving the ArkEnv CLI docs Improvements or additions to documentation tests This issue or PR is about adding, removing or changing tests www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pass --yes and --quiet to the underlying skill process

1 participant