Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0
Thank you for your interest in contributing to the Fullstack AgentCore Solution Template (FAST)! This document provides guidelines and instructions for contributing to this project.
- Contributing to the Fullstack AgentCore Solution Template (FAST)
- Code of Conduct
- FAST Tenets
- Integrated Feature, or Documentation?
- Getting Started
- Development Workflow
- Pull Request Process
- Coding Standards
- Documentation
- Reporting Bugs/Feature Requests
This project has adopted the Amazon Open Source Code of Conduct (even though this code is not open sourced). For more information see the Code of Conduct FAQ or contact opensource-codeofconduct@amazon.com with any additional questions or comments.
Use of AI coding assistants is encouraged when developing the core FAST code base. However, the developer leveraging AI should be able to explain every line of code that AI wrote, without the help of AI. So, use it slowly, and understand what is doing before hitting "y".
Note, the above guideline applies to FAST core developers who are contributing to the FAST code base. FAST is designed for its users to use AI coding assistants to build a full stack application with FAST as a starting point. Users can hold themselves to whatever standards they prefer.
Contributions must comply with the five core tenets of the FAST solution:
- Simplicity, simplicity, simplicity: The starter pack should be just that, a starter pack. It should be bare bones and without any frills, to keep it as easy to adopt as possible. Developers, who are often scientists and not SDEs, should start with the starter pack to handle most of the undifferentiated heavy lifting components of building a full stack application then add onto it, not start with a bloated package and have to remove unnecessary features.
- Adoptability though Documentation: The starter pack should be extremely well documented. While non-core features may not exist in the code base, approaches for implementing them should appear in markdown files in the repository. Users of FAST should instruct their coding assistants to prioritize following this documentation above all else.
- Vibe Friendly: The starter pack should have READMEs and guides demonstrating how to use adapt it according to best practices with vibe coding. It should have opinions on recommended MCP servers and workflows for development. It should show developers that they don’t need to understand any React to modify the frontend.
- Opinionated Language and Framework: Python for the backend as it is the language everyone (including LLMs) is most comfortable with. React for the frontend to keep it as close to production grade as possible. CDK for the infrastructure as code for the modularity.
- Single threaded owner: The starter pack should always have a single-threaded owner/team who maintains it and decides which features are important enough to add into code vs into documentation files (see Tenets #1 and #2).
FAST is a documentation heavy solution. Rather than supporting all possible configurations of agentic applications and requirements out-of-the-box, FAST will support basic starting points for common applications and will have extensive documentation (markdown files) describing how to build on the baseline with best practices so developers can use coding assistants to build exactly what they need.
In this vein, "contributing" to the FAST code base will often be in form of a single, well-authored markdown file which may or may not even contain code snippets. It is recommended that developers research best practices, implement their desired feature, and submit a pull request for review. It is possible that instead of accepting the pull request, the contributor to be asked to convert their contribution into a markdown document instead. That doesn't mean the effort coding up the PR was a waste! It instead means that the effort will serve future FAST users more effectively if it is condensed into a documentation file containing code snippets. This is the manifestation of enforcing Tenets #1 and #2 above.
This section describes how FAST contributors should get started. If you are a FAST user (a scientist or engineer leveraging FAST to build a fullstack agentic solution for a customer engagement) please see the top level repository README instead.
-
Prerequisites:
- Bash shell (Linux, MacOS)
- AWS CLI
- AWS SAM CLI
- Python 3.11 or later
- Docker
-
Fork and Clone the Repository: TODO
-
Install Dependencies and test local build: See the Deployment Guide for prerequisites and setup instructions.
For frontend-specific development, see Frontend README.
For infrastructure development, see Infrastructure README.
Familiarize yourself with the project structure:
docs/: Documentation filesfrontend/: Web UI components (React)gateway/: Shared utilities and tools for AgentCore Gateway integrationinfra-cdk/: Infrastructure as Code (CDK)patterns/: Implementation of Agentic patterns to be deployed into AgentCorescripts/: Utility scripts for development, testing, and deploymenttests/: Unit and integration testsvibe-context/: AI coding assistant context and rules
-
Create a branch from
mainfor your work:git checkout -b feature/your-feature-name
Use prefixes like
feature/,fix/,docs/to indicate the type of change.
- Make your changes in the appropriate files
- Keep changes focused on a single issue or feature
- Write/update tests as necessary
- Ensure code passes linting rules:
- For Python code:
ruffis configured for this project - For UI code: ESLint is configured in
frontend/.eslintrc
- For Python code:
-
Local Testing:
# Run linting and formatting checks make all # For frontend-specific testing cd frontend npm run lint cd ..
For comprehensive testing procedures, see Scripts README.
-
Integration Testing: TODO
- Update Documentation: Ensure all documentation affected by your changes is updated
- Run Tests: Verify that your changes pass all tests
- Create a Pull Request: Submit a PR to the
mainbranch on GitHub with a clear description of:- What the changes do
- Why the changes are needed
- Any relevant context or considerations
- Address Review Feedback: Be responsive to review comments and make requested changes
- Merge: Once approved, your contribution will be merged
- Python: Follow PEP 8 style guidelines
- JavaScript/TypeScript: Follow the ESLint configuration in the project
- Documentation: Update relevant documentation for any changes to functionality
- Commit Messages: Write clear, descriptive commit messages
- Versioning: Follow semantic versioning principles
- Update
README.mdwhen adding significant features - Add detailed documentation to
/docsfor new patterns or major features - Include code comments for complex logic or non-obvious implementations
- Update configuration examples if you modify the configuration structure
We welcome you to use the GitHub issue tracker to report bugs or suggest features for the FAST solution.
Thank you for contributing to the Fullstack AgentCore Solution Template (FAST)!