Compare commits

..

5 Commits

Author SHA1 Message Date
Dmitry Lyalin 223d448575 chore(ci): enforce settings docs parity in preflight
Add a dedicated check:docs:settings script and run it from preflight to catch settings doc drift locally before CI.

Update GEMINI.md testing guidance to include the new CI-parity check for CLI/UI changes.
2026-02-16 11:08:59 -05:00
Sehoon Shon bb7bb11736 feat(cli): add loading state to new agents notification (#19190) 2026-02-16 06:43:25 +00:00
Kevin Moore d1ca8c0c80 docs: document .agents/skills alias and discovery precedence (#19166) 2026-02-16 04:18:36 +00:00
Gaurav 8979fc5f6a fix(core): propagate User-Agent header to setup-phase CodeAssist API calls (#19182) 2026-02-16 03:20:22 +00:00
N. Taylor Mullen 6eec9f3350 fix(core): Encourage non-interactive flags for scaffolding commands (#18804) 2026-02-15 20:26:59 +00:00
13 changed files with 125 additions and 39 deletions
+5 -1
View File
@@ -47,8 +47,12 @@ powerful tool for developers.
be relative to the workspace root, e.g.,
`-w @google/gemini-cli-core -- src/routing/modelRouterService.test.ts`)
- **Full Validation:** `npm run preflight` (Heaviest check; runs clean, install,
build, lint, type check, and tests. Recommended before submitting PRs.)
build, settings docs verification, lint, type check, and tests. Recommended
before submitting PRs.)
- **Individual Checks:** `npm run lint` / `npm run format` / `npm run typecheck`
- **CI-Parity Checks for CLI/UI changes:** Run these before pushing:
`npm run test:ci --workspace @google/gemini-cli` and
`npm run check:docs:settings`.
## Development Conventions
+15 -8
View File
@@ -35,16 +35,22 @@ the full instructions and resources required to complete the task using the
Gemini CLI discovers skills from three primary locations:
1. **Workspace Skills** (`.gemini/skills/`): Workspace-specific skills that are
typically committed to version control and shared with the team.
2. **User Skills** (`~/.gemini/skills/`): Personal skills available across all
your workspaces.
1. **Workspace Skills**: Located in `.gemini/skills/` or the `.agents/skills/`
alias. Workspace skills are typically committed to version control and
shared with the team.
2. **User Skills**: Located in `~/.gemini/skills/` or the `~/.agents/skills/`
alias. These are personal skills available across all your workspaces.
3. **Extension Skills**: Skills bundled within installed
[extensions](../extensions/index.md).
**Precedence:** If multiple skills share the same name, higher-precedence
locations override lower ones: **Workspace > User > Extension**.
Within the same tier (user or workspace), the `.agents/skills/` alias takes
precedence over the `.gemini/skills/` directory. This generic alias provides an
intuitive path for managing agent-specific expertise that remains compatible
across different AI agent tools.
## Managing Skills
### In an Interactive Session
@@ -69,14 +75,15 @@ The `gemini skills` command provides management utilities:
gemini skills list
# Link agent skills from a local directory via symlink
# Discovers skills (SKILL.md or */SKILL.md) and creates symlinks in ~/.gemini/skills (user)
# Discovers skills (SKILL.md or */SKILL.md) and creates symlinks in ~/.gemini/skills
# (or ~/.agents/skills)
gemini skills link /path/to/my-skills-repo
# Link to the workspace scope (.gemini/skills)
# Link to the workspace scope (.gemini/skills or .agents/skills)
gemini skills link /path/to/my-skills-repo --scope workspace
# Install a skill from a Git repository, local directory, or zipped skill file (.skill)
# Uses the user scope by default (~/.gemini/skills)
# Uses the user scope by default (~/.gemini/skills or ~/.agents/skills)
gemini skills install https://github.com/user/repo.git
gemini skills install /path/to/local/skill
gemini skills install /path/to/local/my-expertise.skill
@@ -84,7 +91,7 @@ gemini skills install /path/to/local/my-expertise.skill
# Install a specific skill from a monorepo or subdirectory using --path
gemini skills install https://github.com/my-org/my-skills.git --path skills/frontend-design
# Install to the workspace scope (.gemini/skills)
# Install to the workspace scope (.gemini/skills or .agents/skills)
gemini skills install /path/to/skill --scope workspace
# Uninstall a skill by name
+3 -2
View File
@@ -68,8 +68,9 @@ Skills can bundle resources like scripts.
## How to verify discovery
Gemini CLI automatically discovers skills in the `.gemini/skills` directory.
Check that it found your new skill.
Gemini CLI automatically discovers skills in the `.gemini/skills` directory. You
can also use `.agents/skills` as a more generic alternative. Check that it found
your new skill.
**Command:** `/skills list`
+2 -4
View File
@@ -67,10 +67,8 @@ describe('interactive_commands', () => {
).toBeDefined();
expect(
scaffoldCall?.toolRequest.args,
'Agent should have passed a non-interactive flag (-y, --yes, --no-interactive, or a specific --template)',
).toMatch(
/(?:^|\s)(--yes|-y|--no-interactive|--template\s+\S+)(?:\s|$|\\|")/,
);
'Agent should have passed a non-interactive flag (-y, --yes, or a specific --template)',
).toMatch(/(?:^|\s)(--yes|-y|--template\s+\S+)(?:\s|$|\\|")/);
},
});
});
+2 -1
View File
@@ -28,6 +28,7 @@
"auth": "npm run auth:npm && npm run auth:docker",
"generate": "node scripts/generate-git-commit-info.js",
"predocs:settings": "npm run build --workspace @google/gemini-cli-core",
"check:docs:settings": "npm run predocs:settings && npm run docs:settings -- --check",
"schema:settings": "tsx ./scripts/generate-settings-schema.ts",
"docs:settings": "tsx ./scripts/generate-settings-doc.ts",
"docs:keybindings": "tsx ./scripts/generate-keybindings-doc.ts",
@@ -54,7 +55,7 @@
"lint:all": "node scripts/lint.js",
"format": "prettier --experimental-cli --write .",
"typecheck": "npm run typecheck --workspaces --if-present",
"preflight": "npm run clean && npm ci && npm run format && npm run build && npm run lint:ci && npm run typecheck && npm run test:ci",
"preflight": "npm run clean && npm ci && npm run format && npm run build && npm run check:docs:settings && npm run lint:ci && npm run typecheck && npm run test:ci",
"prepare": "husky && npm run bundle",
"prepare:package": "node scripts/prepare-package.js",
"release:version": "node scripts/version.js",
@@ -7,6 +7,8 @@
import { describe, it, expect, vi } from 'vitest';
import { renderWithProviders as render } from '../../test-utils/render.js';
import { NewAgentsNotification } from './NewAgentsNotification.js';
import { waitFor } from '../../test-utils/async.js';
import { act } from 'react';
describe('NewAgentsNotification', () => {
const mockAgents = [
@@ -54,4 +56,28 @@ describe('NewAgentsNotification', () => {
expect(frame).toMatchSnapshot();
unmount();
});
it('shows processing state when an option is selected', async () => {
const asyncOnSelect = vi.fn(
() =>
new Promise<void>(() => {
// Never resolve
}),
);
const { lastFrame, stdin, unmount } = render(
<NewAgentsNotification agents={mockAgents} onSelect={asyncOnSelect} />,
);
// Press Enter to select the first option
await act(async () => {
stdin.write('\r');
});
await waitFor(() => {
expect(lastFrame()).toContain('Processing...');
});
unmount();
});
});
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: Apache-2.0
*/
import { useState } from 'react';
import { Box, Text } from 'ink';
import { type AgentDefinition } from '@google/gemini-cli-core';
import { theme } from '../semantic-colors.js';
@@ -11,6 +12,7 @@ import {
RadioButtonSelect,
type RadioSelectItem,
} from './shared/RadioButtonSelect.js';
import { CliSpinner } from './CliSpinner.js';
export enum NewAgentsChoice {
ACKNOWLEDGE = 'acknowledge',
@@ -19,13 +21,15 @@ export enum NewAgentsChoice {
interface NewAgentsNotificationProps {
agents: AgentDefinition[];
onSelect: (choice: NewAgentsChoice) => void;
onSelect: (choice: NewAgentsChoice) => void | Promise<void>;
}
export const NewAgentsNotification = ({
agents,
onSelect,
}: NewAgentsNotificationProps) => {
const [isProcessing, setIsProcessing] = useState(false);
const options: Array<RadioSelectItem<NewAgentsChoice>> = [
{
label: 'Acknowledge and Enable',
@@ -39,6 +43,15 @@ export const NewAgentsNotification = ({
},
];
const handleSelect = async (choice: NewAgentsChoice) => {
setIsProcessing(true);
try {
await onSelect(choice);
} finally {
setIsProcessing(false);
}
};
// Limit display to 5 agents to avoid overflow, show count for rest
const MAX_DISPLAYED_AGENTS = 5;
const displayAgents = agents.slice(0, MAX_DISPLAYED_AGENTS);
@@ -85,11 +98,18 @@ export const NewAgentsNotification = ({
</Box>
</Box>
<RadioButtonSelect
items={options}
onSelect={onSelect}
isFocused={true}
/>
{isProcessing ? (
<Box>
<CliSpinner />
<Text color={theme.text.primary}> Processing...</Text>
</Box>
) : (
<RadioButtonSelect
items={options}
onSelect={handleSelect}
isFocused={true}
/>
)}
</Box>
</Box>
);
@@ -64,6 +64,7 @@ describe('codeAssist', () => {
expect(setupUser).toHaveBeenCalledWith(
mockAuthClient,
mockValidationHandler,
httpOptions,
);
expect(MockedCodeAssistServer).toHaveBeenCalledWith(
mockAuthClient,
@@ -93,6 +94,7 @@ describe('codeAssist', () => {
expect(setupUser).toHaveBeenCalledWith(
mockAuthClient,
mockValidationHandler,
httpOptions,
);
expect(MockedCodeAssistServer).toHaveBeenCalledWith(
mockAuthClient,
+5 -1
View File
@@ -24,7 +24,11 @@ export async function createCodeAssistContentGenerator(
authType === AuthType.COMPUTE_ADC
) {
const authClient = await getOauthClient(authType, config);
const userData = await setupUser(authClient, config.getValidationHandler());
const userData = await setupUser(
authClient,
config.getValidationHandler(),
httpOptions,
);
return new CodeAssistServer(
authClient,
userData.projectId,
@@ -77,6 +77,27 @@ describe('setupUser for existing user', () => {
);
});
it('should pass httpOptions to CodeAssistServer when provided', async () => {
vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project');
mockLoad.mockResolvedValue({
currentTier: mockPaidTier,
});
const httpOptions = {
headers: {
'User-Agent': 'GeminiCLI/1.0.0/gemini-2.0-flash (darwin; arm64)',
},
};
await setupUser({} as OAuth2Client, undefined, httpOptions);
expect(CodeAssistServer).toHaveBeenCalledWith(
{},
'test-project',
httpOptions,
'',
undefined,
undefined,
);
});
it('should ignore GOOGLE_CLOUD_PROJECT when project from server is set', async () => {
vi.stubEnv('GOOGLE_CLOUD_PROJECT', 'test-project');
mockLoad.mockResolvedValue({
+3 -1
View File
@@ -12,6 +12,7 @@ import type {
OnboardUserRequest,
} from './types.js';
import { UserTierId, IneligibleTierReasonCode } from './types.js';
import type { HttpOptions } from './server.js';
import { CodeAssistServer } from './server.js';
import type { AuthClient } from 'google-auth-library';
import type { ValidationHandler } from '../fallback/types.js';
@@ -77,6 +78,7 @@ export interface UserData {
export async function setupUser(
client: AuthClient,
validationHandler?: ValidationHandler,
httpOptions: HttpOptions = {},
): Promise<UserData> {
const projectId =
process.env['GOOGLE_CLOUD_PROJECT'] ||
@@ -85,7 +87,7 @@ export async function setupUser(
const caServer = new CodeAssistServer(
client,
projectId,
{},
httpOptions,
'',
undefined,
undefined,
@@ -588,7 +588,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -702,7 +702,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\`. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\`. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. **Build the application and ensure there are no compile errors.**
# Operational Guidelines
@@ -798,7 +798,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\`. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\`. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. **Build the application and ensure there are no compile errors.**
# Operational Guidelines
@@ -1392,7 +1392,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -1505,7 +1505,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -1622,7 +1622,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -1739,7 +1739,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -1964,7 +1964,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -2316,7 +2316,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -2429,7 +2429,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -2653,7 +2653,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
@@ -2766,7 +2766,7 @@ Operate using a **Research -> Strategy -> Execution** lifecycle. For the Executi
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using \`run_shell_command\` for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.
+3 -3
View File
@@ -553,7 +553,7 @@ function newApplicationSteps(options: PrimaryWorkflowsOptions): string {
if (options.approvedPlan) {
return `
1. **Understand:** Read the approved plan. Treat this file as your single source of truth.
2. **Implement:** Implement the application according to the plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)}. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, CSS animations, icons) to ensure a complete, rich, and coherent experience. Never link to external services or assume local paths for assets that have not been created. If you discover new requirements or need to change the approach, confirm with the user and update the plan file.
2. **Implement:** Implement the application according to the plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)}. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, CSS animations, icons) to ensure a complete, rich, and coherent experience. Never link to external services or assume local paths for assets that have not been created. If you discover new requirements or need to change the approach, confirm with the user and update the plan file.
3. **Verify:** Review work against the original request and the approved plan. Fix bugs, deviations, and ensure placeholders are visually adequate. **Ensure styling and interactions produce a high-quality, polished, and beautiful prototype.** Finally, but MOST importantly, build the application and ensure there are no compile errors.
4. **Finish:** Provide a brief summary of what was built.`.trim();
}
@@ -588,7 +588,7 @@ function newApplicationSteps(options: PrimaryWorkflowsOptions): string {
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)} for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)} for commands like 'npm init', 'npx create-react-app'. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons) to ensure a complete, coherent experience. Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. Ensure styling and interactions produce a high-quality, functional, and beautiful prototype. **Build the application and ensure there are no compile errors.**
5. **Solicit Feedback:** Provide instructions on how to start the application and request user feedback on the prototype.`.trim();
}
@@ -603,7 +603,7 @@ function newApplicationSteps(options: PrimaryWorkflowsOptions): string {
- **Mobile:** Compose Multiplatform or Flutter.
- **Games:** HTML/CSS/JS (Three.js for 3D).
- **CLIs:** Python or Go.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)}. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', '--no-interactive', or specific template flags) to prevent the environment from hanging waiting for user input. For example, use 'npx --yes create-vite@latest my-app --no-interactive --template react-ts' for Vite projects. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
3. **Implementation:** Autonomously implement each feature per the approved plan. When starting, scaffold the application using ${formatToolName(SHELL_TOOL_NAME)}. For interactive scaffolding tools (like create-react-app, create-vite, or npm create), you MUST use the corresponding non-interactive flag (e.g. '--yes', '-y', or specific template flags) to prevent the environment from hanging waiting for user input. For visual assets, utilize **platform-native primitives** (e.g., stylized shapes, gradients, icons). Never link to external services or assume local paths for assets that have not been created.
4. **Verify:** Review work against the original request. Fix bugs and deviations. **Build the application and ensure there are no compile errors.**`.trim();
}