diff --git a/.ai-context/COMMANDS.md b/.ai-context/COMMANDS.md index ddb39457..e5eb13eb 100644 --- a/.ai-context/COMMANDS.md +++ b/.ai-context/COMMANDS.md @@ -61,8 +61,9 @@ options. seed agent guidance, and write installer templates. `repo init` defaults new repositories to the configured workspace root; use `--path .` for the current checkout. Plain `repo init` writes local baseline files without committing or - pushing them; `repo init --pr` commits baseline changes on a branch, pushes to - `origin`, and opens a PR. + pushing them; `repo init --agent-ready` also seeds `AGENTS.md` and `skills.md`; + `repo init --pr` commits baseline changes on a branch, pushes to `origin`, and + opens a PR. - `basectl --ci ` - run Base setup/check/doctor with CI-safe defaults. It does not run project tests or create CI runners/VMs. `setup --ci --format json` uses `output` for the compact final status and diff --git a/CHANGELOG.md b/CHANGELOG.md index ea411964..b30331ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,8 @@ and Base versions are tracked in the repo-root `VERSION` file. - Added a bounded `copilot-setup-steps` workflow and documentation for optional GitHub Copilot cloud-agent setup without changing normal local development or CI behavior. +- Added `basectl repo init --agent-ready` to seed `AGENTS.md` and `skills.md` + alongside the standard repo baseline. ### Changed diff --git a/README.md b/README.md index 551217a2..3e1b62b9 100644 --- a/README.md +++ b/README.md @@ -651,7 +651,9 @@ inferred. Newly created GitHub repositories are private by default; pass local baseline but does not commit or push local files. Use `--pr` on an existing clean Git worktree to commit baseline changes on a branch, push that branch to `origin`, and open a pull request. Use `--no-configure` to skip the -GitHub step, or rerun it later with `basectl repo configure`. +GitHub step, or rerun it later with `basectl repo configure`. Add +`--agent-ready` when a new baseline should also include `AGENTS.md` and +`skills.md` for repo-local agent workflow guidance. Clone an existing GitHub repository into the configured workspace with: @@ -680,11 +682,16 @@ basectl repo configure ~/work/example --repo basefoundry/example Seed optional repo-local agent guidance with: ```bash +basectl repo init example --repo basefoundry/example --agent-ready basectl repo agent-guidance ~/work/example --repo-name example basectl repo agent-guidance ~/work/example --repo-name example --pr --dry-run basectl repo check ~/work/example --agent-guidance ``` +Use `repo init --agent-ready` for new baselines that should include agent +guidance from the first pull request. Use `repo agent-guidance` to add or repair +that optional layer in an existing repository. + Use `--pr` on `repo agent-guidance` or `repo installer-template` when the generated helper files should go through review first. The target must be a clean Git worktree, the GitHub repository is inferred from `origin` unless diff --git a/cli/bash/commands/basectl/README.md b/cli/bash/commands/basectl/README.md index 73a9dc40..1a6ef0e5 100644 --- a/cli/bash/commands/basectl/README.md +++ b/cli/bash/commands/basectl/README.md @@ -113,7 +113,8 @@ such command directories exist. Optional utility CLIs such as `caff` and checkout, pass the repository name plus `--path .`; plain `repo init` does not commit or push local files. Use `--pr` on an existing clean Git worktree to commit baseline changes on a branch, push that branch to `origin`, and open a - pull request. + pull request. Use `--agent-ready` when the baseline should also include + `AGENTS.md` and `skills.md`. `basectl repo clone ` clones one existing GitHub repository into the configured workspace, supports `--owner ` for short names, and treats matching existing checkouts as already satisfied. @@ -141,9 +142,10 @@ such command directories exist. Optional utility CLIs such as `caff` and preserves missing item field values where possible. Already-standard Projects are left intact. `basectl repo agent-guidance [path]` seeds optional repo-local agent guidance - files and `basectl repo check [path] --agent-guidance` verifies that optional - layer for repos that opt in. Use `--pr` when generated guidance should land - through a draft pull request instead of direct file generation. + files for existing repos, and `basectl repo check [path] --agent-guidance` + verifies that optional layer for repos that opt in. Use `--pr` when generated + guidance should land through a draft pull request instead of direct file + generation. `basectl repo installer-template [path]` prints or writes the maintained project installer starter script. Use `--pr` with a path to open the generated installer template as a draft pull request. diff --git a/cli/bash/commands/basectl/subcommands/repo.sh b/cli/bash/commands/basectl/subcommands/repo.sh index 7e771eff..6e90cfcd 100644 --- a/cli/bash/commands/basectl/subcommands/repo.sh +++ b/cli/bash/commands/basectl/subcommands/repo.sh @@ -59,6 +59,7 @@ Options: --path Target path for repo init. Defaults to workspace root plus . --repo GitHub repository to configure. --pr Commit the generated baseline on a branch and open a pull request. + --agent-ready Also seed repo-local agent guidance files. --description Repository description for generated README. --copyright-holder Copyright holder for generated AGPL license. Defaults to git config user.name. --private Create a private GitHub repository when needed. This is the default. @@ -102,6 +103,7 @@ configuration. For the current checkout, pass its repository name and --path . Plain repo init writes local baseline files but does not commit or push them. With --pr, repo init commits baseline changes on a branch, pushes that branch to origin, and opens a pull request. +Pass --agent-ready to include AGENTS.md and skills.md with the baseline. EOF } @@ -1539,9 +1541,15 @@ base_repo_stage_pr_files() { } base_repo_stage_pr_baseline_files() { + local agent_ready="${2:-0}" + local files=("${BASE_REPO_BASELINE_FILES[@]}") local root="$1" - base_repo_stage_pr_files "$root" "repository baseline files" "${BASE_REPO_BASELINE_FILES[@]}" + if [[ "$agent_ready" == "1" ]]; then + files+=(AGENTS.md skills.md) + fi + + base_repo_stage_pr_files "$root" "repository baseline files" "${files[@]}" } base_repo_relative_path_under_root() { @@ -1612,8 +1620,9 @@ base_repo_finish_generated_pr() { base_repo_create_baseline_pr_body() { local name="$1" - local root="$2" local repo="$3" + local root="$2" + local command_hint="${4:-basectl repo init $name --path $root --repo $repo --pr}" cat < "$body_file" + base_repo_create_baseline_pr_body "$name" "$root" "$repo" "$command_hint" > "$body_file" gh pr create \ --repo "$repo" \ --base "$default_branch" \ @@ -1774,9 +1786,10 @@ base_repo_finish_pr_baseline() { } base_repo_pr_baseline_has_changes() { + local agent_ready="${2:-0}" local root="$1" - base_repo_stage_pr_baseline_files "$root" || return 2 + base_repo_stage_pr_baseline_files "$root" "$agent_ready" || return 2 if git -C "$root" diff --cached --quiet --; then git -C "$root" reset --quiet || return 2 return 1 @@ -1785,6 +1798,51 @@ base_repo_pr_baseline_has_changes() { return 0 } +base_repo_write_init_agent_guidance() { + local agents_existed=0 + local default_branch="$3" + local dry_run="$1" + local pr_template_existed=0 + local repo_name="$2" + local root="$5" + local skills_existed=0 + local status=0 + local summary_args=() + local validation_command="$4" + + base_repo_load_agent_guidance || return 1 + + if [[ "$dry_run" != "1" ]]; then + [[ -e "$root/AGENTS.md" ]] && agents_existed=1 + [[ -e "$root/skills.md" ]] && skills_existed=1 + [[ -e "$root/.github/pull_request_template.md" ]] && pr_template_existed=1 + fi + + base_repo_write_agent_instructions "$dry_run" "$repo_name" "$default_branch" "$validation_command" "$root" || status=1 + base_repo_write_agent_skills "$dry_run" "$repo_name" "$root" || status=1 + + if [[ "$dry_run" != "1" && "$status" -eq 0 ]]; then + if ((agents_existed)); then + summary_args+=(--unchanged "AGENTS.md") + else + summary_args+=(--created "AGENTS.md") + fi + if ((skills_existed)); then + summary_args+=(--unchanged "skills.md") + else + summary_args+=(--created "skills.md") + fi + if ((pr_template_existed)); then + summary_args+=(--unchanged ".github/pull_request_template.md") + else + summary_args+=(--created ".github/pull_request_template.md") + fi + base_repo_print_agent_guidance_summary "${summary_args[@]}" + fi + + return "$status" +} + base_repo_check_baseline() { local current_dir local fix_path @@ -1874,6 +1932,8 @@ base_repo_check_agent_guidance() { } base_repo_init() { + local agent_default_branch="main" + local agent_ready=0 local configure=1 local baseline_change_status=0 local copyright_holder="" @@ -1932,6 +1992,10 @@ base_repo_init() { create_pr=1 shift ;; + --agent-ready) + agent_ready=1 + shift + ;; --description) [[ -n "${2:-}" ]] || { base_repo_init_usage_error "Option '--description' requires an argument." @@ -2096,20 +2160,30 @@ base_repo_init() { "$project_owner" \ "$project_schema" \ "$copy_project_fields_from" \ + "$agent_ready" \ "${initiative_options[@]}" )" base_repo_prepare_pr_branch "$dry_run" "$root" "$pr_branch" "$default_branch" || return 1 fi base_repo_write_baseline "$dry_run" "$name" "$description" "$copyright_holder" "$root" || return 1 + if ((agent_ready)); then + if [[ -n "$default_branch" && "$default_branch" != "" ]]; then + agent_default_branch="$default_branch" + elif [[ "$dry_run" != "1" ]]; then + agent_default_branch="$(base_repo_detect_default_branch "$root" 2>/dev/null || true)" + [[ -n "$agent_default_branch" ]] || agent_default_branch="main" + fi + base_repo_write_init_agent_guidance "$dry_run" "$name" "$agent_default_branch" "./tests/validate.sh" "$root" || return 1 + fi if ((create_pr)); then if [[ "$dry_run" == "1" ]]; then - base_repo_finish_pr_baseline "$dry_run" "$name" "$root" "$github_repo" "$pr_branch" "$default_branch" "$pr_rerun_command" + base_repo_finish_pr_baseline "$dry_run" "$name" "$root" "$github_repo" "$pr_branch" "$default_branch" "$pr_rerun_command" "$agent_ready" return $? fi - if base_repo_pr_baseline_has_changes "$root"; then - base_repo_finish_pr_baseline "$dry_run" "$name" "$root" "$github_repo" "$pr_branch" "$default_branch" "$pr_rerun_command" + if base_repo_pr_baseline_has_changes "$root" "$agent_ready"; then + base_repo_finish_pr_baseline "$dry_run" "$name" "$root" "$github_repo" "$pr_branch" "$default_branch" "$pr_rerun_command" "$agent_ready" return $? else baseline_change_status=$? diff --git a/cli/bash/commands/basectl/subcommands/repo_agent_guidance.sh b/cli/bash/commands/basectl/subcommands/repo_agent_guidance.sh index 3064a757..01637df8 100644 --- a/cli/bash/commands/basectl/subcommands/repo_agent_guidance.sh +++ b/cli/bash/commands/basectl/subcommands/repo_agent_guidance.sh @@ -152,6 +152,7 @@ base_repo_print_agent_guidance_summary() { local total=3 local unchanged=() local unchanged_count + local unchanged_verb local unchanged_word while (($#)); do @@ -180,13 +181,17 @@ base_repo_print_agent_guidance_summary() { fi created_word="files" + unchanged_verb="were" unchanged_word="files" [[ "$created_count" == "1" ]] && created_word="file" - [[ "$unchanged_count" == "1" ]] && unchanged_word="file" + if [[ "$unchanged_count" == "1" ]]; then + unchanged_word="file" + unchanged_verb="was" + fi if ((created_count > 0 && unchanged_count > 0)); then - printf "Agent guidance: %d %s created, %d %s already existed and were left unchanged.\n" \ - "$created_count" "$created_word" "$unchanged_count" "$unchanged_word" + printf "Agent guidance: %d %s created, %d %s already existed and %s left unchanged.\n" \ + "$created_count" "$created_word" "$unchanged_count" "$unchanged_word" "$unchanged_verb" elif ((created_count > 0)); then printf "Agent guidance: %d %s created.\n" "$created_count" "$created_word" else diff --git a/cli/bash/commands/basectl/tests/completions.bats b/cli/bash/commands/basectl/tests/completions.bats index 5416c82c..6f0eccbe 100644 --- a/cli/bash/commands/basectl/tests/completions.bats +++ b/cli/bash/commands/basectl/tests/completions.bats @@ -296,7 +296,7 @@ EOF [[ "$output" == *"trust_allow_options=--workspace --manifest-sha256"* ]] [[ "$output" == *"trust_revoke_options=--workspace"* ]] [[ "$output" == *"repo_commands=init clone check configure agent-guidance installer-template"* ]] - [[ "$output" == *"repo_init_options=--path --repo --pr --description --copyright-holder --private --public --no-configure --no-protect-default-branch --project --project-owner --project-schema --initiative-option --copy-project-fields-from --no-project --dry-run"* ]] + [[ "$output" == *"repo_init_options=--path --repo --pr --agent-ready --description --copyright-holder --private --public --no-configure --no-protect-default-branch --project --project-owner --project-schema --initiative-option --copy-project-fields-from --no-project --dry-run"* ]] [[ "$output" == *"repo_clone_options=--owner --path --dry-run"* ]] [[ "$output" == *"repo_check_options=--agent-guidance"* ]] [[ "$output" == *"repo_configure_options=--repo --no-protect-default-branch --project --project-owner --project-schema --initiative-option --copy-project-fields-from --replace-project --no-project --dry-run"* ]] diff --git a/cli/bash/commands/basectl/tests/repo.bats b/cli/bash/commands/basectl/tests/repo.bats index 38f3663b..c82328f2 100644 --- a/cli/bash/commands/basectl/tests/repo.bats +++ b/cli/bash/commands/basectl/tests/repo.bats @@ -178,6 +178,7 @@ run_repo_command_with_mocks() { [[ "$output" == *"Usage:"* ]] [[ "$output" == *"basectl repo init [options]"* ]] [[ "$output" == *"--path "* ]] + [[ "$output" == *"--agent-ready"* ]] [[ "$output" == *"--pr"* ]] [[ "$output" == *"--copy-project-fields-from "* ]] [[ "$output" == *"Create a new public GitHub repo and configure it."* ]] @@ -1162,6 +1163,35 @@ EOF [[ "$output" == *"Repository baseline is present."* ]] } +@test "basectl repo init --agent-ready creates baseline and agent guidance" { + local repo_dir="$TEST_TMPDIR/base-demo" + + run_basectl repo init base-demo --path "$repo_dir" --agent-ready --no-configure + + [ "$status" -eq 0 ] + [ -f "$repo_dir/README.md" ] + [ -f "$repo_dir/.github/pull_request_template.md" ] + [ -f "$repo_dir/AGENTS.md" ] + [ -f "$repo_dir/skills.md" ] + grep -Fq "Agent Instructions for base-demo" "$repo_dir/AGENTS.md" + grep -Fq "Project Skills for base-demo" "$repo_dir/skills.md" + [[ "$output" == *"Agent guidance: 2 files created, 1 file already existed and was left unchanged."* ]] + [[ "$output" == *"Created: AGENTS.md, skills.md"* ]] + [[ "$output" == *"Unchanged: .github/pull_request_template.md"* ]] +} + +@test "basectl repo init --agent-ready dry-run reports agent guidance files" { + local repo_dir="$TEST_TMPDIR/base-demo" + + run_basectl repo init base-demo --path "$repo_dir" --agent-ready --no-configure --dry-run + + [ "$status" -eq 0 ] + [[ "$output" == *"[DRY-RUN] Would create '$repo_dir/README.md'."* ]] + [[ "$output" == *"[DRY-RUN] Would create '$repo_dir/AGENTS.md'."* ]] + [[ "$output" == *"[DRY-RUN] Would create '$repo_dir/skills.md'."* ]] + [ ! -e "$repo_dir" ] +} + @test "basectl repo init explains when GitHub configuration is skipped" { local repo_dir="$TEST_TMPDIR/base-demo" @@ -2017,6 +2047,62 @@ EOF [[ "$output" == *"--repo codeforester/base-demo --pr"* ]] } +@test "basectl repo init --agent-ready --pr includes agent guidance files" { + local commit_files + local remote_dir="$TEST_TMPDIR/origin.git" + local repo_dir="$TEST_TMPDIR/base-demo" + + init_git_repo "$repo_dir" + printf '# Existing project\n' > "$repo_dir/README.md" + commit_all "$repo_dir" "Initial commit" + git init --bare "$remote_dir" >/dev/null 2>&1 + git -C "$repo_dir" remote add origin "$remote_dir" + git -C "$repo_dir" push -u origin master >/dev/null 2>&1 + + cat > "$TEST_MOCKBIN/gh" <<'EOF' +#!/usr/bin/env bash +if [[ "$*" == "auth status -h github.com" ]]; then + exit 0 +fi +if [[ "$*" == "repo view codeforester/base-demo --json defaultBranchRef --jq .defaultBranchRef.name" ]]; then + printf 'master\n' + exit 0 +fi +printf '%s\n' "$*" >> "${BASE_REPO_TEST_STATE_DIR:?}/gh-args" +body_file="" +is_pr_create=0 +if [[ "$1" == "pr" && "$2" == "create" ]]; then + is_pr_create=1 +fi +while (($#)); do + if [[ "$1" == "--body-file" ]]; then + body_file="$2" + break + fi + shift +done +[[ -n "$body_file" ]] && cat "$body_file" > "${BASE_REPO_TEST_STATE_DIR:?}/pr-body" +if [[ "$is_pr_create" == "1" ]]; then + printf 'https://github.com/codeforester/base-demo/pull/1\n' +fi +EOF + chmod +x "$TEST_MOCKBIN/gh" + + run env \ + HOME="$TEST_HOME" \ + BASE_REPO_TEST_STATE_DIR="$TEST_STATE_DIR" \ + PATH="$TEST_MOCKBIN:$PATH" \ + "$BASE_REPO_ROOT/bin/basectl" repo init base-demo --path "$repo_dir" --repo codeforester/base-demo --agent-ready --pr + + [ "$status" -eq 0 ] + commit_files="$(git -C "$repo_dir" show --name-only --pretty=format: HEAD)" + [[ "$commit_files" == *"AGENTS.md"* ]] + [[ "$commit_files" == *"skills.md"* ]] + grep -Fq "basectl repo init base-demo --path" "$TEST_STATE_DIR/pr-body" + grep -Fq -- "--agent-ready" "$TEST_STATE_DIR/pr-body" + [[ "$output" == *"--agent-ready"* ]] +} + @test "basectl repo init --pr configures GitHub when baseline has no changes" { local remote_dir="$TEST_TMPDIR/origin.git" local repo_dir="$TEST_TMPDIR/base-demo" diff --git a/docs/command-reference.md b/docs/command-reference.md index 04c56692..8815909c 100644 --- a/docs/command-reference.md +++ b/docs/command-reference.md @@ -98,7 +98,7 @@ daily project loop commands from the local checkout. | Command | What it does | Important flags | |---|---|---| -| `basectl repo init <name>` | Create a Base-managed repository baseline, including `.github/base-project.yml`, and optionally create/configure the GitHub repo. Use `--path .` for the current checkout; plain init does not commit or push local files, while `--pr` commits baseline changes on a branch, pushes it to `origin`, and opens a PR. | `--path <path>`, `--repo <owner/name>`, `--description <text>`, `--copyright-holder <name>`, `--public`, `--private`, `--pr`, `--project <title>`, `--project-owner <login>`, `--project-schema <schema>`, `--copy-project-fields-from <title>`, `--initiative-option <name>`, `--no-configure`, `--no-project`, `--no-protect-default-branch`, `--dry-run` | +| `basectl repo init <name>` | Create a Base-managed repository baseline, including `.github/base-project.yml`, and optionally create/configure the GitHub repo. Use `--path .` for the current checkout; plain init does not commit or push local files, while `--pr` commits baseline changes on a branch, pushes it to `origin`, and opens a PR. Use `--agent-ready` to seed `AGENTS.md` and `skills.md` with the baseline. | `--path <path>`, `--repo <owner/name>`, `--description <text>`, `--copyright-holder <name>`, `--public`, `--private`, `--pr`, `--agent-ready`, `--project <title>`, `--project-owner <login>`, `--project-schema <schema>`, `--copy-project-fields-from <title>`, `--initiative-option <name>`, `--no-configure`, `--no-project`, `--no-protect-default-branch`, `--dry-run` | | `basectl repo clone <name-or-owner/name>` | Clone one GitHub repository into the configured Base workspace, treating matching existing checkouts as already satisfied. | `--owner <owner>`, `--path <path>`, `--dry-run` | | `basectl repo check [path]` | Verify the local repository baseline. | `--agent-guidance` | | `basectl repo configure [path]` | Apply Base-managed GitHub repository settings, labels, branch protection, and repo Project metadata. Reads `.github/base-project.yml` to seed options and fill missing issue defaults when present. | `--repo <owner/name>`, `--project <title>`, `--project-owner <login>`, `--project-schema <schema>`, `--copy-project-fields-from <title>`, `--initiative-option <name>`, `--replace-project`, `--no-project`, `--no-protect-default-branch`, `--dry-run` | diff --git a/docs/repo-baseline.md b/docs/repo-baseline.md index 89806175..1b3cbcd7 100644 --- a/docs/repo-baseline.md +++ b/docs/repo-baseline.md @@ -47,7 +47,8 @@ not already exist, and then configures that GitHub repository when inferred. New GitHub repositories are private by default; pass `--public` only when public visibility is intentional. That keeps the common new-repo path to one command. Use `--no-configure` when GitHub setup should be skipped or when -local-only initialization is desired. +local-only initialization is desired. Add `--agent-ready` when the baseline +should also seed `AGENTS.md` and `skills.md` for agent-assisted development. Without `--path`, `repo init` creates the repository under the configured workspace root: @@ -73,6 +74,8 @@ basectl repo init base-demo \ or uses the predictable branch `base/repo-baseline-<name>`, writes any missing baseline files, commits only the baseline file set, pushes the branch to `origin`, and opens a GitHub pull request against the repository default branch. +When `--agent-ready` is passed, the baseline PR also includes `AGENTS.md` and +`skills.md`. When the generated baseline produces file changes, `repo init --pr` stops after opening the pull request. After that pull request is merged, rerun the same `repo init --pr` command; when there are no baseline file changes left, it @@ -89,6 +92,7 @@ basectl repo check ~/work/base-demo Seed optional repo-local agent guidance: ```bash +basectl repo init base-demo --repo basefoundry/base-demo --agent-ready basectl repo agent-guidance ~/work/base-demo --repo-name base-demo basectl repo agent-guidance ~/work/base-demo --repo-name base-demo --pr --dry-run ``` @@ -244,8 +248,10 @@ apply the shared Project fields and issue defaults. ## Optional Agent Guidance -`repo agent-guidance` creates repo-local guidance files for agent-assisted -development when they do not already exist: +`repo init --agent-ready` includes the agent instructions and skills index in a +new baseline. For existing repositories, `repo agent-guidance` creates +repo-local guidance files for agent-assisted development when they do not +already exist: - `AGENTS.md` - `skills.md` diff --git a/docs/technical-overview.md b/docs/technical-overview.md index b9224dfc..1cf6656d 100644 --- a/docs/technical-overview.md +++ b/docs/technical-overview.md @@ -195,7 +195,7 @@ and their own build systems. See [Setup Hooks Boundary](setup-hooks.md). | Command | What it does | |---|---| -| `basectl repo init <name> [--repo owner/name]` | Create a Base-managed repo baseline; use `--path .` for the current checkout and `--pr` when baseline changes should be pushed through a PR | +| `basectl repo init <name> [--repo owner/name]` | Create a Base-managed repo baseline; use `--agent-ready` to include `AGENTS.md` and `skills.md`, `--path .` for the current checkout, and `--pr` when baseline changes should be pushed through a PR | | `basectl repo check [path]` | Validate repo baseline | | `basectl repo configure [path]` | Repair / standardize repo settings | | `basectl repo agent-guidance [path]` | Seed AI guidance for a repo | diff --git a/lib/shell/completions/basectl_completion.sh b/lib/shell/completions/basectl_completion.sh index c9f199b9..0a015b9d 100644 --- a/lib/shell/completions/basectl_completion.sh +++ b/lib/shell/completions/basectl_completion.sh @@ -238,7 +238,7 @@ _base_basectl_completion() { _base_basectl_completion_compgen "init clone check configure agent-guidance installer-template" "$cur" ;; init) - _base_basectl_completion_compgen "--path --repo --pr --description --copyright-holder --private --public --no-configure --no-protect-default-branch --project --project-owner --project-schema --initiative-option --copy-project-fields-from --no-project --dry-run -v -h --help" "$cur" + _base_basectl_completion_compgen "--path --repo --pr --agent-ready --description --copyright-holder --private --public --no-configure --no-protect-default-branch --project --project-owner --project-schema --initiative-option --copy-project-fields-from --no-project --dry-run -v -h --help" "$cur" ;; clone) _base_basectl_completion_compgen "--owner --path --dry-run -v -h --help" "$cur" diff --git a/lib/shell/completions/basectl_completion.zsh b/lib/shell/completions/basectl_completion.zsh index 230a5a8d..f3b4c323 100644 --- a/lib/shell/completions/basectl_completion.zsh +++ b/lib/shell/completions/basectl_completion.zsh @@ -321,6 +321,7 @@ _base_basectl_completion() { '--path[Target path]:path:_files' \ '--repo[GitHub repository]:repo:' \ '--pr[Commit the generated baseline on a branch and open a pull request]' \ + '--agent-ready[Also seed repo-local agent guidance files]' \ '--description[Repository description]:description:' \ '--copyright-holder[Copyright holder]:name:' \ '--private[Create a private GitHub repository when needed]' \