# Contributing to InvestSkill
Thank you for your interest in contributing! We welcome contributions of all kindsβbug reports, feature requests, documentation, and code improvements.
# Code of Conduct
Be respectful, inclusive, and professional. Weβre building a community for investment research enthusiasts and professionals.
# Ways to Contribute
# 1. π Report Bugs
Found an issue? Help us fix it.
Include:
- Platform (Claude Code, Cursor, Gemini CLI, etc.)
- Your version:
npm testshows version - Steps to reproduce
- Expected vs. actual behavior
- Error messages (full output)
# 2. π‘ Suggest Features
Have an idea for a new skill or improvement?
Describe:
- Feature overview
- Use case example
- Why it helps users
- Implementation ideas (optional)
# 3. π Improve Documentation
Documentation improvements are always welcome:
- Typo fixes
- Clearer examples
- Better organization
- Updated screenshots
Improvements to:
- README files
- Inline code comments
- Guides and tutorials
- FAQs
# 4. π― Add a New Skill
Want to create a new analysis framework?
See ADDING-NEW-SKILLS.md for:
- Complete 12-step walkthrough
- File structure & templates
- Platform sync checklist
- Testing procedures
- Review process
# 5. π§ͺ Fix Bugs
Found and fixed a bug? Weβd love your PR!
# 6. β¨ Enhance Existing Skills
Improvements to existing frameworks:
- Better algorithms
- More comprehensive analysis
- Faster computation
- Better documentation
# Development Setup
# Prerequisites
- Node.js 18.0.0+
- git
- GitHub account
# Local Setup
# Clone repository
git clone https://github.com/yennanliu/InvestSkill.git
cd InvestSkill
# Install dependencies (if any)
npm install
# Run test suite
npm test
# Run validation
npm run pre-release
# Verify setup
npm run verify
# Test Before Submitting
# All checks
npm run pre-release
# Or individually
npm test # Unit tests
npm run validate # Prompt quality
npm run verify # Setup verification
npm run integration-tests # Platform artifacts
All tests must pass before submitting a PR.
# Submitting Changes
# Before You Start
- Check if your idea is already discussed in Issues or Discussions
- For new skills: read ADDING-NEW-SKILLS.md
- For bugs: confirm itβs reproducible locally
# Creating a Pull Request
-
Fork the repository
git clone https://github.com/YOUR-USERNAME/InvestSkill.git cd InvestSkill -
Create a feature branch
git checkout -b feature/your-feature-name # or: git checkout -b fix/issue-name -
Make your changes
- Keep commits focused (one feature/fix per commit)
- Write clear commit messages
- Reference issues:
fixes #123
-
Test your changes
npm test # Unit tests npm run integration-tests # Platform tests npm run pre-release # Full validation -
Push to your fork
git push origin feature/your-feature-name -
Open a Pull Request
- Reference the issue being fixed:
fixes #123 - Describe what your change does
- Explain why itβs needed
- Include test results (screenshots, output, etc.)
- Reference the issue being fixed:
# PR Checklist
- [ ] Tests pass:
npm testshows 270+ passed - [ ] Linting passes: No warnings
- [ ] Documentation updated
- [ ] Commit messages are clear
- [ ] Changes follow project conventions
- [ ] Added new tests if needed
# Code Standards
# Naming Conventions
- Files: kebab-case (
stock-eval.md) - Functions: camelCase (
getStockMetrics()) - Constants: UPPER_SNAKE_CASE (
MAX_RETRIES) - Classes: PascalCase (
StockAnalyzer)
# JavaScript Style
- Use
'use strict'at top of files - 2-space indentation
- Semicolons required
- No trailing commas in objects
# Markdown Style
- 80-character line limit
- Clear section headers (# Main, ## Sub, ### Detail)
- Code blocks with language tags
- Tables for structured data
- Links in markdown:
[text](url)
# Comments
-
Code comments: Why, not what
// Filter out delisted tickers (removed from exchanges) const activeTickers = tickers.filter(t => !delistedSet.has(t)); -
Documentation: Clear, concise, complete
### Feature Name Brief description. Key benefits. Use case.
# Adding a New Skill
See ADDING-NEW-SKILLS.md for the comprehensive guide.
Quick summary:
- Create skill directory:
plugins/us-stock-analysis/skills/skill-name/ - Write
SKILL.md(Claude Code skill definition) - Copy to
prompts/skill-name.md(universal prompt, no frontmatter) - Register in
plugin.json - Update
.cursor/rules/,GEMINI.md,.github/copilot-instructions.md - Update README files & CHANGELOG
- Run full test suite
- Submit PR with all changes
# Review Process
# What We Look For
β Good PRs have:
- Clear purpose & description
- Tests passing (270+ unit tests, 22 integration tests)
- Updated documentation
- Focused, logical commits
- Follows project conventions
β Issues that delay approval:
- Tests failing
- Documentation not updated
- Unclear commit messages
- Style inconsistencies
- Too many unrelated changes
# Timeline
- Small fixes: 1-3 days
- New skills: 3-7 days
- Major changes: 1-2 weeks
Reviewers will provide feedback, or approve and merge.
# Questions?
- How do I add a new skill? β ADDING-NEW-SKILLS.md
- Iβm stuck. β GitHub Discussions
- Found a bug. β GitHub Issues
- Need help? β FAQ.md
# Resources
| Resource | Purpose |
|---|---|
| README.md | Project overview |
| ADDING-NEW-SKILLS.md | Complete contributor guide |
| FAQ.md | Common questions & answers |
| CHANGELOG.md | Version history |
| DEPLOYMENT-STATUS.md | Current platform status |
# Thank you for making InvestSkill better! π
Your contributions help build professional investment analysis tools for everyone.