Thank you for considering contributing to the FAF TAF Action!
We follow the WJTTC (WolfeJam Technical & Testing Center) philosophy:
"We break things so others never know they were broken."
This means:
- Test everything
- Find bugs early
- Fix them immediately
- Maintain championship standards
- Be professional
- Be respectful
- Focus on facts
- Trust is everything
- No BS - only verified claims
- Node.js 20+
- npm or yarn
- Git
- TypeScript knowledge
# Clone the repository
git clone https://github.com/Wolfe-Jam/faf-taf-action.git
cd faf-taf-action
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test
# Run integration tests
npx tsx test-standalone.ts
npx tsx test-mcp.tsfaf-taf-action/
├── src/
│ ├── index.ts # Main action entry point
│ ├── taf-core.ts # MCP-portable TAF operations
│ └── parsers/
│ └── jest.ts # Jest output parser
├── tests/
│ └── jest-parser.test.ts # Unit tests
├── docs/
│ ├── USER-GUIDE.md # User documentation
│ └── RELEASE-NOTES.md # Release history
├── action.yml # Action definition
└── package.json # Dependencies
Open an issue with:
- Clear description
- Steps to reproduce
- Expected vs actual behavior
- Environment details
- Minimal reproduction case
Open an issue with:
- Use case description
- Why it's valuable
- Proposed implementation (optional)
- Alternatives considered
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Update documentation
- Submit a pull request
- Use strict mode (already configured)
- Explicit types everywhere
- No
anyunless absolutely necessary - Descriptive variable names
- Functions should be pure when possible
- All new code must have tests
- Maintain 100% coverage for critical paths
- Use descriptive test names
- Test both success and failure cases
- Update README.md for user-facing changes
- Update USER-GUIDE.md for new features
- Add inline comments for complex logic
- Keep CLAUDE.md synchronized
Follow our git protocol:
<type>: <what changed>
- <specific change 1>
- <specific change 2>
Types: fix: feat: docs: refactor: chore: test:
Examples:
fix: Handle Jest output with skipped tests
- Add skipped count parsing
- Update test result interface
- Add unit tests for skipped tests
feat: Add Mocha parser support
- Create mocha.ts parser
- Add Mocha output format detection
- Update documentation
- Add integration tests
Never:
- No exclamation marks
- No emotion or hype
- No "finally" or "at last"
- Keep it boring and professional
To add support for a new test framework:
Create src/parsers/[framework].ts:
export interface TestResults {
total: number;
passed: number;
failed: number;
skipped?: number;
result: 'PASSED' | 'FAILED' | 'IMPROVED' | 'DEGRADED';
}
export function parseFrameworkOutput(output: string): TestResults | null {
// Parse framework-specific output
// Return null if output doesn't match format
}Create tests/[framework]-parser.test.ts:
import { parseFrameworkOutput } from '../src/parsers/framework';
describe('Framework Parser', () => {
it('should parse all passing tests', () => {
const output = `...`;
const result = parseFrameworkOutput(output);
expect(result?.total).toBe(10);
// ... more assertions
});
// Test all output variations
});Modify src/index.ts to detect and use the new parser.
- Add to README.md supported frameworks list
- Add examples to USER-GUIDE.md
- Update RELEASE-NOTES.md
Before submitting a PR:
# All unit tests must pass
npm test
# Build must succeed with no errors
npm run build
# Integration tests must pass
npx tsx test-standalone.ts
npx tsx test-mcp.ts
# TypeScript must compile with no errors
npx tsc --noEmit-
Automated Checks
- TypeScript compilation
- Test suite (must be 100%)
- Linting
-
Code Review
- Architecture fit
- Code quality
- Test coverage
- Documentation
-
Testing
- Manual testing if needed
- Integration verification
-
Approval & Merge
- Squash and merge
- Clean commit history
Releases follow semantic versioning:
- Major (v2.0.0): Breaking changes
- Minor (v1.1.0): New features, backward compatible
- Patch (v1.0.1): Bug fixes
Release checklist:
- Update version in package.json
- Update RELEASE-NOTES.md
- Run full test suite
- Build and verify dist/
- Create git tag
- Push to GitHub
- Create GitHub release
- Announce in discussions
We maintain F1-inspired engineering standards:
- Methodical: Not a race, do it right
- Tested: WJTTC certified
- Professional: Boring is good
- Trusted: Facts only, no hype
- GitHub Discussions: https://github.com/Wolfe-Jam/faf/discussions
- Email: team@faf.one
Thank you for contributing to the Golden Triangle!