You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: plan 427, PR 2 of agent-first development plan (#478)
* save progress
* undo review-code skill change
* delete status file
* small tweaks
* Fix 429 info
* update workind on skill info
* updates
* Update architecture/overview.md
Co-authored-by: Johnny Greco <jogreco@nvidia.com>
* fix: correct symbol names and CLI commands in architecture docs
Address review comments:
- models.md: describe clients as native httpx adapters, not SDK wrappers
- agent-introspection.md: use actual family keys (columns, samplers, etc.) not column-types
- cli.md: use correct command `data-designer config models`
- plugins.md: SEED_READER not SEED_SOURCE, inject_into_processor_config_type_union
Made-with: Cursor
---------
Co-authored-by: Johnny Greco <jogreco@nvidia.com>
Copy file name to clipboardExpand all lines: .agents/skills/create-pr/SKILL.md
+59-21Lines changed: 59 additions & 21 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
---
2
2
name: create-pr
3
-
description: Create a GitHub PR with a well-formatted description including summary, categorized changes, and attention areas
3
+
description: Create a GitHub PR with a well-formatted description matching the repository PR template (flat Changes by default; optional Added/Changed/Removed/Fixed grouping)
4
4
argument-hint: [special instructions]
5
5
disable-model-invocation: true
6
6
metadata:
@@ -9,7 +9,7 @@ metadata:
9
9
10
10
# Create Pull Request
11
11
12
-
Create a well-formatted GitHub pull request for the current branch.
12
+
Create a well-formatted GitHub pull request for the current branch. The PR description must conform to the repository's PR template (`.github/PULL_REQUEST_TEMPLATE.md`).
13
13
14
14
## Arguments
15
15
@@ -40,15 +40,21 @@ Run these commands in parallel to understand the changes:
40
40
41
41
## Step 2: Analyze and Categorize Changes
42
42
43
-
### By Change Type (from commits and diff)
43
+
Use change types below to **decide** how to write the Changes section (flat vs grouped). You still describe testing under **Testing**, not under these buckets.
44
+
45
+
### By change type (internal checklist)
44
46
- ✨ **Added**: New files, features, capabilities
45
47
- 🔧 **Changed**: Modified existing functionality
46
48
- 🗑️ **Removed**: Deleted files or features
47
49
- 🐛 **Fixed**: Bug fixes
48
50
- 📚 **Docs**: Documentation updates
49
51
- 🧪 **Tests**: Test additions/modifications
50
52
51
-
### Identify Attention Areas 🔍
53
+
### When to use optional grouping in **Changes**
54
+
-**Flat bullet list** (default): Small PRs, single theme, or when categories would be sparse or redundant.
55
+
-**Grouped subheadings** (`### ✨ Added`, `### 🔧 Changed`, `### 🗑️ Removed`, `### 🐛 Fixed`): Large PRs, release-note-style summaries, or clearly distinct fix + feature mixes. **Omit any empty section** — do not leave placeholder headings.
56
+
57
+
### Identify attention areas
52
58
Flag for special reviewer attention:
53
59
- Files with significant changes (>100 lines)
54
60
- Changes to base classes, interfaces, or public API
@@ -75,35 +81,63 @@ If commits have mixed types, use the primary/most significant type.
75
81
git push -u origin <branch-name>
76
82
```
77
83
78
-
2.**Create PR** using this template:
84
+
2.**Build the PR body** using the repository's template structure.
85
+
86
+
**Default — flat Changes** (remove the HTML comment block from the template when filling in, or replace with your bullets only):
79
87
80
88
```markdown
81
89
## 📋 Summary
82
90
83
-
[1-2 sentence overview of what this PR accomplishes]
91
+
[1-3 sentences: what this PR does and why. Focus on the "why".]
92
+
93
+
## 🔗 Related Issue
94
+
95
+
[Fixes #NNN or Closes #NNN — link to the issue this addresses]
96
+
97
+
## 🔄 Changes
98
+
99
+
-[Bullet list of key changes]
100
+
-[Link to key files when helpful for reviewers]
101
+
-[Reference commits for specific changes in multi-commit PRs]
102
+
103
+
## 🧪 Testing
104
+
105
+
-[x]`make test` passes
106
+
-[x] Unit tests added/updated (or: N/A — no testable logic)
Copy file name to clipboardExpand all lines: .agents/skills/review-code/SKILL.md
+16Lines changed: 16 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -94,6 +94,11 @@ Read the following files at the repository root to load the project's standards
94
94
-**`STYLEGUIDE.md`** — code style rules (formatting, naming, imports, type annotations), design principles (DRY, KISS, YAGNI, SOLID), common pitfalls, lazy loading and `TYPE_CHECKING` patterns
95
95
-**`DEVELOPMENT.md`** — testing patterns and expectations
96
96
97
+
**Documentation sources (load when the changeset touches matching areas):**
98
+
99
+
-**`architecture/*.md`** — subsystem maps aligned with `packages/` (e.g. `engine/mcp/` ↔ `architecture/mcp.md`). Use to verify the PR does not leave recorded architecture false relative to new behavior.
100
+
-**`docs/`** — published user-facing documentation. Cross-check when public API, CLI behavior, or config surface changes would affect what readers are told.
101
+
97
102
Use these guidelines as the baseline for the entire review. Project-specific rules take precedence over general best practices.
98
103
99
104
## Step 3: Understand the Scope
@@ -147,6 +152,17 @@ Re-read the changed files with a focus on **structure and design of the new/modi
147
152
- Obvious inefficiencies introduced by this change (N+1 queries, repeated computation, unnecessary copies)
148
153
- Appropriate data structures for the access pattern
149
154
155
+
**Documentation alignment (same pass — scoped, not a full docs audit):**
156
+
157
+
When **code** under `packages/` changes behavior, structure, or public contracts in a way that a maintainer would reasonably describe in `architecture/` or `docs/`:
158
+
159
+
1. Identify the closest **`architecture/<topic>.md`** (and any obvious `docs/` pages) for that subsystem.
160
+
2. If the PR **also edits** those docs, sanity-check that the edits match the code.
161
+
3. If the PR **does not** edit docs but the change **contradicts** what `architecture/` or `docs/` currently asserts, flag it (**Warnings** if contributors rely on that text; **Suggestions** if impact is narrow). Suggest updating the same PR or an explicit follow-up issue.
162
+
4.**Skip** this check for pure refactors with no observable behavior change, typo-only PRs, or changes already limited to documentation.
163
+
164
+
The local **`search-docs`** skill can help locate `docs/` pages by topic when the right file is not obvious.
165
+
150
166
### Pass 3: Standards, Testing & Polish
151
167
152
168
Final pass focused on **project conventions and test quality for new/modified code only**:
Copy file name to clipboardExpand all lines: .github/ISSUE_TEMPLATE/feature-request.yml
+16Lines changed: 16 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -38,8 +38,24 @@ body:
38
38
attributes:
39
39
label: Describe alternatives you've considered
40
40
placeholder: A clear and concise description of any alternative solutions or features you've considered.
41
+
- type: textarea
42
+
id: agent-investigation
43
+
attributes:
44
+
label: Agent Investigation
45
+
description: |
46
+
If your agent explored the codebase to assess feasibility (for example by searching project documentation or existing issues), paste its findings here.
47
+
placeholder: Paste agent output here, if applicable.
41
48
- type: textarea
42
49
id: context
43
50
attributes:
44
51
label: Additional context
45
52
placeholder: Add any other context or screenshots about the feature request here.
53
+
- type: checkboxes
54
+
id: checklist
55
+
attributes:
56
+
label: Checklist
57
+
options:
58
+
- label: I've reviewed existing issues and the documentation
59
+
required: true
60
+
- label: This is a design proposal, not a "please build this" request
> Stub — to be populated. See source code at `packages/data-designer/src/data_designer/cli/`.
3
+
The agent introspection subsystem provides machine-readable CLI commands that let agents discover DataDesigner's type system, configuration state, and available operations at runtime.
4
+
5
+
Source: `packages/data-designer/src/data_designer/cli/commands/agent.py` and `packages/data-designer/src/data_designer/cli/utils/agent_introspection.py`
4
6
5
7
## Overview
6
-
<!-- Agent CLI commands, type discovery, family specs -->
8
+
9
+
Agent introspection solves a specific problem: when an agent helps someone **author a dataset configuration** (columns, samplers, validators, processors, and related options), it needs an accurate catalog of what is available — including types added by installed plugins. Rather than hardcoding that knowledge or parsing source code, the agent can call `data-designer agent` commands to get structured, up-to-date information.
7
10
8
11
## Key Components
9
-
<!-- Main classes, modules, entry points -->
12
+
13
+
### Commands
14
+
15
+
All commands live under the `data-designer agent` group:
16
+
17
+
| Command | Purpose |
18
+
|---------|---------|
19
+
|`data-designer agent context`| Full context dump: version, paths, type catalogs, model aliases, persona state, available operations |
20
+
|`data-designer agent types [family]`| Type catalog for one or all families, with descriptions and source file locations |
21
+
|`data-designer agent state model-aliases`| Configured model aliases with usability status (missing provider, missing API key, etc.) |
22
+
|`data-designer agent state persona-datasets`| Available persona datasets with download status per locale |
23
+
24
+
### FamilySpec
25
+
26
+
Maps a **family name** to a **discriminated union type** and its **discriminator field**:
`discover_family_types` walks `typing.get_args(type_union)`, reads each Pydantic model's discriminator field annotation (must be `Literal[...]`), and builds a map of discriminator string → model class. Detects and reports duplicate discriminator values.
39
+
40
+
`get_family_catalog` yields the class name and first docstring paragraph for each type — enough for an agent to understand what each type does without reading source code.
41
+
42
+
`get_family_source_files` uses `inspect.getfile` and normalizes paths under `data_designer/` (absolute path fallback for plugin types outside the tree).
43
+
44
+
### State Commands
45
+
46
+
Reuse the CLI's repository stack:
47
+
-**Model aliases**: `ModelRepository` + `ProviderRepository` + `get_providers_with_missing_api_keys` to report usability status (configured, missing provider, missing API key)
48
+
-**Personas**: `PersonaRepository` + `DownloadService` for locale availability and download status
49
+
50
+
### Error Handling
51
+
52
+
`AgentIntrospectionError` carries a `code`, `message`, and `details` dict. Commands catch these and output structured error information to stderr with exit code 1, making errors parseable by agents.
53
+
54
+
### Command Registration
55
+
56
+
`AGENT_COMMANDS` in `agent_command_defs.py` drives both the lazy Typer command map in `main.py` and `get_operations()` in introspection. This single source of truth ensures the operations table in `agent context` output stays in sync with the actual commands.
-**Declarative type discovery from Pydantic unions** rather than maintaining a separate type inventory. The discriminated unions are the source of truth for what types exist (including plugins), so introspection reads directly from them.
73
+
-**Structured errors with codes** enable agents to handle failures programmatically (retry, report, escalate) rather than parsing human-readable error messages.
74
+
-**Single command registration source** (`AGENT_COMMANDS`) prevents the operations table from drifting out of sync with actual CLI commands.
75
+
-**Source file resolution** helps agents navigate to implementations when they need to understand a type's behavior, not just its existence.
16
76
17
77
## Cross-References
18
-
<!-- Links to related architecture docs -->
19
-
-[System Architecture](overview.md)
20
-
-[CLI](cli.md)
21
-
-[Config Layer](config.md)
78
+
79
+
-[System Architecture](overview.md) — where agent introspection fits
80
+
-[CLI](cli.md) — the CLI architecture that hosts these commands
81
+
-[Config Layer](config.md) — the discriminated unions that introspection reads
82
+
-[Plugins](plugins.md) — how plugin types appear in introspection results
0 commit comments