Skip to content

release: v0.2.0#20

Merged
github-actions[bot] merged 23 commits into
mainfrom
release/v0.2.0
Apr 30, 2026
Merged

release: v0.2.0#20
github-actions[bot] merged 23 commits into
mainfrom
release/v0.2.0

Conversation

@eumaninho54

Copy link
Copy Markdown
Member

🚀 Summary

Release v0.2.0 — introduces the /rn-component scaffold command and a set of structural improvements to the skill/command system.

Type of change

  • feat — new feature
  • refactor — code restructuring
  • docs — documentation
  • release — new version

📝 Changes

/rn-component scaffold command

  • src/commands/rn-component/SKILL.md — command definition with arg parsing, PascalCase validation, collision check, and file generation table
  • src/commands/rn-component/references/architecture.md — Layered Hook Architecture reference
  • 15 template files under references/templates/ covering View, Styles, ViewModel, Reanimated, Services, and Library layers

Rules and skill refactoring

  • src/rules/conventional-commits.md — new reusable rule with commit types, format, and constraints; referenced by all skills/commands that commit
  • src/skills/commit/SKILL.md — removed duplicated commit documentation, now delegates to conventional-commits.md
  • src/commands/feature/SKILL.md — removed inline /branch and /commit logic, now references git-workflow.md and conventional-commits.md
  • src/commands/land/SKILL.md, src/commands/rn-component/SKILL.md, src/commands/feature/SKILL.md — added user-invocable: true to frontmatter for symmetry with skills that carry user-invocable: false
  • src/rules/skills-format.md — documented user-invocable: true requirement for commands

CI/CD and docs

  • Improved release workflow order and error handling
  • Added branch naming conventions and JSX conditional rendering style guide

🧪 Testing

  • Existing tests pass
  • New tests added (if applicable)
  • Tested manually

🎟️ Related Tickets

  • Related Issue #
  • Closes #

eumaninho54 and others added 22 commits April 24, 2026 05:36
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>
@eumaninho54

Copy link
Copy Markdown
Member Author

DEPLOY-RELEASE

@github-actions github-actions Bot merged commit d3dd70d into main Apr 30, 2026
@github-actions

Copy link
Copy Markdown
Contributor

Deployed successfully. Version 0.2.0 has been tagged as v0.2.0, a GitHub Release has been created with auto-generated release notes, and this PR has been merged into main.

@github-actions github-actions Bot deleted the release/v0.2.0 branch April 30, 2026 21:56

@llamapreview llamapreview Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
Loading

🌟 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.

Comment on lines +18 to +21
### 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.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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>

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 format

Evidence: path:src/commands/feature/SKILL.md, path:src/skills/commit/SKILL.md

Comment on lines +23 to +27
- `outputDir` = `<path>/<ComponentName>` — resolve `--path` to an absolute path if relative (use `pwd` to resolve)

## Collision check

Run via Bash:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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