### Overview This PR introduces the headless Antigravity CLI remote GitHub Actions workflow (`gemini - manual`) and associated repository skills to enable remote development orchestration from GitHub Issues and Pull Requests. ### Key Changes 1. **GitHub Actions Workflow (`.github/workflows/gemini-manual.yml`)**: - Collaborator access guard (`OWNER`, `MEMBER`, `COLLABORATOR`). - Interactive emoji reactions (`eyes` and `rocket`). - Multi-turn conversation persistence via `actions/cache@v4` on `~/.gemini/antigravity-cli/conversations` and `brain/`. - Command dispatchers for `/plan`, `/implement`, and `/fix`. - Pre-push monorepo verification gates (`typecheck`, `lint`, `test`). 2. **Repository Skills (`.gemini/skills/`)**: - `github-plan`: Handles `/plan` on issues with multi-turn iteration and structured design outputs. - `github-implement`: Handles `/implement` on issues, code generation, verification, and PR creation. - `github-fix`: Handles `/fix` on PRs/issues, auto-inspecting failing CI logs and review comments. 3. **Project Guidelines (`GEMINI.md`)**: - Updated safety rules to allow automated GitOps workflows. --- Disclosure: I'm an AI assistant helping deytenit; I'm not deytenit.
6.4 KiB
6.4 KiB
name, description
| name | description |
|---|---|
| github-plan | Analyze an issue thread, iterate on feedback, and produce or update an implementation plan for ermnvldmr.com. |
GitHub Issue Planning Skill (ASD-STE100 Standard)
Overview
Use this skill when an issue receives the /plan [optional instructions] command.
This skill creates or updates an implementation plan before code modification starts. All outputs must follow ASD-STE100 language constraints and repository standards.
ASD-STE100 Writing Rules
Follow these rules for all generated plans and documentation:
| Rule | Limit | Approved Example | Non-Approved Example |
|---|---|---|---|
| Procedural Sentences | Max 20 words | "Run pnpm test. Verify that all unit tests pass." |
"You should run the pnpm test command to verify that all the unit tests pass properly without errors." |
| Descriptive Sentences | Max 25 words | "The Button component uses cva to manage style variants." |
"The Button component is implemented using the cva library because it helps us manage complex style variants across different themes easily." |
| Voice | Active voice | "The function validates the user input." | "The user input is validated by the function." |
| Mood and Tense | Present tense and Imperative mood | "Click Submit. The form transmits the data." | "You will click submit and the form will be transmitting the data." |
| Noun Clusters | Max 3 nouns | "Theme configuration file" | "Theme variant style configuration file" |
Controlled Vocabulary Guidelines
- Do not use conversational filler (for example: "basically", "let's dive in", "simply", "feel free to").
- Use approved verbs: use use (not utilize), stop (not terminate), start (not initiate), show (not exhibit).
- Use clear and literal technical terms.
Planning Responsibilities
1. Ingest Full Issue Context
- Read the issue title, issue description, and all subsequent comments.
- Identify user requirements, technical constraints, and reported symptoms.
- Inspect relevant source files in the repository before proposing changes.
- Read
GEMINI.mdto confirm current project conventions.
2. Multi-Turn Plan Iteration
- Check if an earlier implementation plan exists in the issue thread.
- If an earlier plan exists:
- Do not create a plan from zero.
- Retain approved architectural decisions from previous turns.
- Apply the requested modifications or additions from the latest comment.
- Summarize the specific adjustments made to the previous plan.
- If no earlier plan exists:
- Create a new baseline implementation plan from the issue requirements.
3. Enforce Repository Architecture (GEMINI.md)
Every proposed plan must comply with repository architecture:
- Build System: Use Rsbuild and Rspack. Do not propose Vite, Webpack, or Next.js.
- Strict TypeScript:
- Do not use
any. - Do not use type assertions (
as Type). Use type guards orcastReffrom@ermnvldmr/stl. - Do not use non-null assertions (
!). - Use
import typefor type-only imports. - Define object shapes with
interface, nottypealiases. - Require JSDoc comments on all exported symbols.
- Do not use
- Component Architecture (
packages/ui):- Place components in
packages/ui/src/components/<ComponentName>/. - Provide
<ComponentName>.tsx,<ComponentName>.stories.tsx, and<ComponentName>.test.tsx. - Use
cvafor variant definitions. - Merge class names with
cn(...)from@ermnvldmr/stl.
- Place components in
- Accessibility & State:
- Use React Aria hooks (
useButton,useFocusRing,useHover) and Radix UI primitives. - Use standard React state (
useState,useReducer,useContext) andreact-stately. - Do not introduce external state management libraries.
- Use React Aria hooks (
- Monorepo Import Rules:
- Use relative import paths within the same package.
- Do not import
@ermnvldmr/<package>inside<package>itself.
- Protected Files:
- Do not modify
.env.keys,pnpm-lock.yaml,LICENSE,services/docs/content/, orservices/www/content/.
- Do not modify
Output Plan Structure
Format the generated plan with the following markdown template:
### Goal
[Describe the objective in 1-2 sentences. Keep each sentence under 25 words.]
### Architecture & Technical Decisions
- [Decision 1: Explain pattern, primitive, or component structure.]
- [Decision 2: Explain typing or API contracts.]
- [Decision 3: Explain state management or accessibility integration.]
### File Changes
- `[NEW]` `packages/ui/src/components/NewComponent/NewComponent.tsx` - [Purpose]
- `[NEW]` `packages/ui/src/components/NewComponent/NewComponent.stories.tsx` - [Purpose]
- `[NEW]` `packages/ui/src/components/NewComponent/NewComponent.test.tsx` - [Purpose]
- `[MODIFY]` `packages/ui/src/index.ts` - [Export new component]
### Verification Plan
1. `pnpm typecheck` - Verify zero TypeScript compiler errors.
2. `pnpm lint` - Verify zero ESLint warnings and errors.
3. `pnpm test` - Run unit and integration tests.
4. `pnpm build` - Run full workspace build.
### Open Questions
- [List open questions or ambiguities. If no open questions exist, write "None.".]
Disclosure: I'm an AI assistant helping deytenit; I'm not deytenit.
Common Traps and Solutions
| Anti-Pattern | Correct Action |
|---|---|
| Regenerating a new plan after user feedback | Update the existing plan and highlight modified sections. |
Using as Type assertions in the proposed code |
Propose explicit type guards or castRef helpers. |
| Missing Storybook or Vitest files for UI components | Include .stories.tsx and .test.tsx in the file plan. |
| Proposing external state libraries | Use React 19 primitives and react-stately. |
| Omitting the attribution line | Append the mandatory disclosure line at the end. |
Verification Checklist
Before posting the plan response, verify all items:
- The issue thread context and all user comments are analyzed.
- Existing plans are updated rather than replaced from scratch.
- Proposed code satisfies all
GEMINI.mdconstraints (strict: true, noany, noas, no!). - All UI components include unit tests and Storybook stories.
- All sentences follow ASD-STE100 limits (<=20 words for instructions, <=25 words for descriptions).
- Active voice is used throughout the plan.
- The output concludes with:
Disclosure: I'm an AI assistant helping deytenit; I'm not deytenit.