Skip to content

feat!: rename the AI issue inputs and document every input - #85

Merged
hawkeyexl merged 5 commits into
claude/action-v2from
claude/ga2-v2-inputs
Nov 7, 2026
Merged

hawkeyexl merged 5 commits into
claude/action-v2from
claude/ga2-v2-inputs

Conversation

@hawkeyexl

@hawkeyexl hawkeyexl commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • Renames the AI issue inputs so the Action no longer shares a name with config integrations: integrations → issue_mentions, prompt → issue_prompt. The old names stay as deprecated aliases for the life of v2.
  • Gives every action.yml input a README section whose default matches action.yml, and adds a test that keeps it that way.
  • Adds scripts/check-doc-examples.mjs, which validates README and artifacts/ examples against doc-detective-common@v5-rc, and runs it in npm test.
  • The check also fails v2 forms, meaning any example that validate() accepts only by upgrading it from v2, such as steps keyed by action. Deliberate counter-examples stay skippable with an invalid fence.
  • Deletes the four unreferenced v2 headful configs in artifacts/, and converts artifacts/change.spec.json to v3. It keeps the same platforms and chrome, and its Windows step gets shell: cmd for its cmd syntax.
  • Titles the issue body's collapsible section "AI issue mentions" instead of "Integrations". The unknown-value warning now names issue_mentions.
  • Tightens the fail-tests assertion. It now also requires summary.specs.fail > 0, so exit 2 or a crash with no results no longer counts as the expected failure.
  • Folds in the README content of docs: Add integrations and prompt inputs to README #59, rewritten for @v2 and the new names. docs: Add integrations and prompt inputs to README #59 can be closed.

Interface

Input before Input after Notes
integrations issue_mentions integrations still works. Its description is Deprecated: use `issue_mentions`.
prompt issue_prompt prompt still works. Its description is Deprecated: use `issue_prompt`.

The action reads the new name first, then falls back to the old one.

  • Old name only: it logs The `integrations` input is deprecated. Rename it to `issue_mentions`. (same form for prompt).
  • Both names set: the job fails before the run with Set `issue_mentions` or `integrations`, not both.
  • issue_prompt declares no default: in action.yml. The runner fills action.yml defaults in before the action starts, so a defaulted issue_prompt would always look set and hide a value given as prompt. The action applies the same default itself, and the description states it ("Defaults to …").

Other action.yml and README changes:

  • config and input: "Relative to working_directory."
  • pr_branch default: doc-detective-<timestamp> (milliseconds since the Unix epoch), not doc-detective-{DATE}.
  • pr_body default: "passed for failed" → "passed or failed". The README quotes the default in full, and the stray ~~~~ is gone.
  • README issue_body default now matches action.yml (A Doc Detective run ($RUN_URL) failed with the following results:$RESULTS), with a table for $RESULTS, $RUN_URL and $PROMPT.
  • README working_directory default is `.`. The text uses record, not startRecording. Example job ids are doc-tests, not runTests.
  • exit_on_fail: "Unlike the CLI's exitOnFail: false, this never turns exit 2 (nothing tested) green."
  • The issue-body size error names issue_prompt.
  • test.yml, local.yml and main.yml use the new names. The manual job is now fail-tests-with-issue-mentions.

Tests

  • src/actionInputs.test.ts was written red first. It failed on working_directory, issue_body, the missing alias behavior and the deprecated descriptions. It parses action.yml and README.md and checks four things:
    • every input has a ### \name`section under## Inputs`, and every section names a real input;
    • each README (default: …) equals the action.yml default;
    • multi-line defaults (pr_body) appear in full in their section, and code-applied defaults (pr_branch, issue_prompt) appear in the action.yml description;
    • the issue_prompt default in code equals the documented one.
  • Unit tests for getAliasedInput cover the new name only, the old name with its warning, both names failing, and neither name.
  • npm test: 46 unit tests pass. Example check: Doc examples: 3 checked, 29 skipped, 0 failed. The 3 checked are artifacts/.doc-detective.json (config), change.spec.json and tests.spec.yaml (specs). The skips are the README's workflow YAML. A local probe with a bad goTo step and a v2 find.matchText spec fails the check. A fence marked json invalid is skipped. The v2-form rule was written red first: it failed on the v2 change.spec.json before the conversion. Probes with a standalone v2 action step and a v2 test both fail it.
  • npm run typecheck passes. dist/ is rebuilt; the bundle diff is only the source changes.

Docs impact

Yes. The renamed inputs are user-facing. This PR updates the README and action.yml. Retitling the core docs page "Integrations" to "AI issue mentions" (/docs/ci/issue-mentions, with a redirect) belongs to core and isn't in this PR.

🤖 Generated with Claude Code

hawkeyexl and others added 2 commits November 7, 2026 04:17
Rename `integrations` to `issue_mentions` and `prompt` to `issue_prompt`,
so the Action no longer shares a name with config `integrations`. The old
names stay as deprecated aliases: the action reads the new name first,
falls back to the old one with a warning, and fails when both are set.

`issue_prompt` has no action.yml default, because the runner fills
defaults in before the action starts and that would hide a value set
under `prompt`. The action applies the default itself.

README now has a section for every input, and each default matches
action.yml (working_directory, pr_branch, pr_body, issue_body and its
$RESULTS, $RUN_URL and $PROMPT tokens). It says `config` and `input`
are relative to `working_directory`, uses `record`, drops the stray
`~~~~`, notes that exit_on_fail never turns exit 2 green, and uses
`doc-tests` job ids. It folds in the content of #59.

src/actionInputs.test.ts parses action.yml and README.md and fails when
an input lacks a section or a documented default drifts.

BREAKING CHANGE: the `integrations` and `prompt` inputs are renamed
`issue_mentions` and `issue_prompt`. The old names still work, log a
deprecation warning, and fail the job when set together with the new
name.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
scripts/check-doc-examples.mjs classifies each fenced json/yaml block in
README.md, and each artifacts/*.{json,yaml,yml} file, as a spec, test,
step, or config by shape, and validates it with doc-detective-common's
validate(). It skips blocks it can't classify and fences marked
`invalid`. `npm test` runs it after the unit tests, against
doc-detective-common@v5-rc as a devDependency.

Delete the four v2 headful configs in artifacts/. Nothing references
them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: f5ef4457-d1b6-4028-acc7-21ff6767f38b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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

hawkeyexl and others added 3 commits November 7, 2026 04:25
The example check now fails any example that validate() accepts only by
upgrading it from v2, such as `"action": "goTo"` steps. With
addDefaults: false, validate() returns the caller's object unless it
transformed it, so a different object means a v2 form. Steps keyed by
`action` now classify as steps, so a standalone v2 step is checked too.
Deliberate counter-examples stay skippable with an `invalid` fence.

Red first: the stricter check failed on artifacts/change.spec.json.
Convert it to v3: `runShell` steps, `runOn` with the same platforms and
chrome, and `shell: cmd` on the Windows step, whose command is cmd
syntax.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`integrations` now means only the config key, so the collapsible section
that `issue_mentions` adds to the issue body is titled "AI issue
mentions", and the unknown-value warning names `issue_mentions`. README
and action.yml name the section.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The fail-tests assertion passed on any step failure, including exit 2
(nothing tested) or a crash with no results. It now also requires the
results output with summary.specs.fail above 0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@promptless

promptless Bot commented Nov 7, 2026

Copy link
Copy Markdown

Promptless documentation updates

@claude

claude Bot commented Nov 7, 2026 •

Copy link
Copy Markdown

Claude encountered an error —— View job


I'll analyze this and get back to you.

@hawkeyexl
hawkeyexl merged commit 9151149 into claude/action-v2 Nov 7, 2026
9 of 10 checks passed
@hawkeyexl
hawkeyexl deleted the claude/ga2-v2-inputs branch November 7, 2026 13:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant