release: v0.2.0#20
Conversation
Introduces the /rn-component user-invocable command that generates a
complete React Native component skeleton following the Layered Hook
Architecture (View / ViewModel / Static Styles / Animated Styles /
Services / Library). Includes SKILL.md, architecture reference doc, and
13 TypeScript/TSX template files with {{ComponentName}} placeholders.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Architecture spec requires useStyles to return StyleSheet.create directly. useMemo was invented and not part of the spec. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Architecture spec requires only a placeholder comment and an empty return. Removes useState/useCallback stubs and fixes import to deep path to avoid barrel cycle. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…mplate Architecture spec leaves the return shape for the developer to define. The state and handleAction fields were invented and not part of the spec. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Previous check used ls -A which allowed false negatives on empty dirs and || short-circuit masked permission errors. Replaced with a simple directory existence check. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Space validation was only run when --path came from \$ARGUMENTS. Moving the check to after path resolution ensures it also covers paths provided interactively by the user. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…nentName}} placeholder Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Adds src/rules/jsx-style.md with complete JSX styling conventions, focusing on conditional rendering patterns and guard operators. Updates CLAUDE.md to reference the new rule and adds JSX guidance to rn-component architecture reference. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Documents branch naming standards for release, dev, and feature branches, including version prefix requirements. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Simplifies branch naming rules to focus on release and feature branches. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Reorder merge and tag steps to tag the correct commit on main, add `|| true` to branch deletion to prevent failure if branch doesn't exist, and upgrade checkout action to v5. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Update the commit skill description to reflect its wider applicability across different user phrasings and languages for saving changes to git. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Extract commit types, format, and rules from commit skill into reusable rule file for reference across skills and commands. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Remove duplicated commit types, format, and rules from commit skill. Add reference to src/rules/conventional-commits.md instead. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Remove inline /branch and /commit logic from feature skill. Add references to git-workflow.md and conventional-commits.md. Add user-invocable: true to frontmatter. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Add user-invocable: true to frontmatter for land and rn-component commands. Clean up rn-component description to remove redundant instruction. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Add documentation that commands must include user-invocable: true in frontmatter. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
feat: rn-component scaffold command
|
DEPLOY-RELEASE |
|
Deployed successfully. Version |
There was a problem hiding this comment.
AI Code Review by LlamaPReview
🎯 TL;DR & Recommendation
Recommendation: Approve with suggestions
This release v0.2.0 introduces the /rn-component scaffold command and refactors the skill/command system for better reusability. The changes are well-structured, but three minor issues—a documentation inconsistency, a hardcoded co-author line in a shared rule, and a missing path validation—should be addressed for accuracy and security.
📄 Documentation Diagram
This diagram documents the /rn-component scaffold command workflow.
sequenceDiagram
participant User
participant Command as /rn-component
participant FileSystem
User->>Command: Invoke with --name and --path
Command->>Command: Parse arguments, validate PascalCase
Command->>Command: Resolve path and check for spaces
Command->>FileSystem: Check if outputDir exists
FileSystem-->>Command: EXISTS or OK
alt EXISTS
Command->>User: Abort: directory already exists
else OK
Command->>User: Print architecture summary
Command->>FileSystem: Create directory tree
Command->>Command: For each template: read, substitute placeholders, write
Command->>FileSystem: Generate 15 files with {{ComponentName}} replaced
FileSystem-->>Command: Files created
Command->>User: List generated files and confirm
end
note over Command: PR #35;20 added /rn-component scaffold<br/>with template substitution logic
🌟 Strengths
- Clear architectural layering is well documented and consistently applied across templates.
- Extracting reusable rules (conventional-commits, git-workflow) improves maintainability.
| Priority | File | Category | Impact Summary (≤12 words) | Anchors |
|---|---|---|---|---|
| P2 | src/commands/rn-component/references/architecture.md |
Bug | Docs promise useMemo but template omits it | path:...templates/styles.ts.tmpl |
| P2 | src/rules/conventional-commits.md |
Maintainability | Hardcoded co-author may cause incorrect attribution | path:src/commands/feature/SKILL.md |
| P2 | src/commands/rn-component/SKILL.md |
Security | No project-root restriction on --path |
Service Update
Thank you for being one of the 4,000+ repositories trusting LlamaPReview. As the AI coding landscape shifts, we are stepping back from the review SaaS model.
Free reviews for private repositories will pause on May 1, 2026 00:00:00 UTC (Public open-source repos remain free).
If you've enjoyed our work, we'd be honored if you checked out our new open-source journey at DocMason.
| ### Static Styles (`styles.ts`) | ||
| - Exports `useStyles(props: I<ComponentName>Props)` — a hook that returns a `StyleSheet.create({})` result. | ||
| - Memoized with `useMemo`. | ||
| - No animated properties here. |
There was a problem hiding this comment.
P2 | Confidence: High
The architecture document states that the static styles hook should be "Memoized with useMemo". However, the corresponding template (styles.ts.tmpl) does not include useMemo:
import { StyleSheet } from 'react-native';
import type { I{{ComponentName}}Props } from './types';
export const useStyles = (props: I{{ComponentName}}Props) => {
return StyleSheet.create({ container: { flex: 1 } });
};This inconsistency means that scaffolded components will not have the memoization that the architecture promises, potentially causing unnecessary re-calculations on every render. A developer reading the architecture doc would expect useMemo wrapping; the absence creates a documentation–implementation gap. The mismatch is intentional per commit 23ee45d (which removed useMemo from the template), but the architecture document was not updated to match. This is a documentation bug.
Code Suggestion:
### Static Styles (`styles.ts`)
- Exports `useStyles(props: I<ComponentName>Props)` — a hook that returns a `StyleSheet.create({})` result.
- No animated properties here.Evidence: path:src/commands/rn-component/references/templates/styles.ts.tmpl
|
|
||
| [optional body if subject is not enough] | ||
|
|
||
| Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> |
There was a problem hiding this comment.
P2 | Confidence: Medium
The new conventional-commits.md rule includes a hardcoded co-author line specific to Claude Haiku 4.5. The feature skill (which references this rule) instructs its implementer agent (Sonnet) to use Co-Authored-By: Claude Sonnet 4.6 .... The commit skill also references the rule and uses Haiku. This creates a mismatch: if a non-commit skill blindly copies the exact commit format from the rule, it will produce the wrong co-author line. The rule should either omit the co-author line (since it varies per agent) or provide a placeholder like Co-Authored-By: <agent model name>. This is a maintenance risk that could lead to incorrect attribution in commits.
Code Suggestion:
## Commit formatEvidence: path:src/commands/feature/SKILL.md, path:src/skills/commit/SKILL.md
| - `outputDir` = `<path>/<ComponentName>` — resolve `--path` to an absolute path if relative (use `pwd` to resolve) | ||
|
|
||
| ## Collision check | ||
|
|
||
| Run via Bash: |
There was a problem hiding this comment.
P2 | Confidence: Medium
The command only validates that --path does not contain spaces, but it does not restrict the path to the current project directory. A user could provide a path like ../../etc or /tmp, and the command would resolve it and create files outside the intended project scope. While the user invokes this command intentionally, an attacker-controlled instruction could be injected via a prompt injection attack (e.g., "run /rn-component with path ../../ssh to overwrite authorized_keys"). The collision check only prevents overwriting if the exact final directory already exists, but mkdir -p will create intermediate directories in sensitive locations. Adding validation that the resolved absolute path starts with the project root would mitigate this risk.
Code Suggestion:
- After path resolution: verify that the resolved absolute path starts with the current project root (e.g., `pwd`). If not, abort with an error message.
🚀 Summary
Release v0.2.0 — introduces the
/rn-componentscaffold command and a set of structural improvements to the skill/command system.Type of change
📝 Changes
/rn-componentscaffold commandsrc/commands/rn-component/SKILL.md— command definition with arg parsing, PascalCase validation, collision check, and file generation tablesrc/commands/rn-component/references/architecture.md— Layered Hook Architecture referencereferences/templates/covering View, Styles, ViewModel, Reanimated, Services, and Library layersRules and skill refactoring
src/rules/conventional-commits.md— new reusable rule with commit types, format, and constraints; referenced by all skills/commands that commitsrc/skills/commit/SKILL.md— removed duplicated commit documentation, now delegates toconventional-commits.mdsrc/commands/feature/SKILL.md— removed inline/branchand/commitlogic, now referencesgit-workflow.mdandconventional-commits.mdsrc/commands/land/SKILL.md,src/commands/rn-component/SKILL.md,src/commands/feature/SKILL.md— addeduser-invocable: trueto frontmatter for symmetry with skills that carryuser-invocable: falsesrc/rules/skills-format.md— documenteduser-invocable: truerequirement for commandsCI/CD and docs
🧪 Testing
🎟️ Related Tickets