Task: Reverse Engineer Project Architecture into ADRs 🕵️♂️
Your task is to analyze a given GitHub repository or its contents to identify key technologies, tools, frameworks, and languages used. For each identified technology, you will create a separate Architecture Decision Record (ADR) in Markdown format, documenting its use, even if the original decision rationale is unknown due to reverse engineering.
Instructions
-
Analyze Repository Contents: Examine the provided repository URL or contents (e.g.,
package.json,pom.xml,Dockerfile,README.md, configuration files, etc.) to detect:- Programming Languages (e.g., JavaScript, Python, Java, Go)
- Frameworks & Libraries (e.g., React, Spring Boot, Django, Express.js)
- Build Tools & Package Managers (e.g., npm, Yarn, Maven, Gradle, Webpack)
- Database Technologies (e.g., PostgreSQL, MongoDB, Redis, MySQL)
- DevOps/CI/CD Tools & Containerization (e.g., Docker, Kubernetes, Jenkins, GitHub Actions)
- Testing Frameworks (e.g., Jest, JUnit, Pytest, Cypress)
- Other Relevant Technologies impacting the architecture (e.g., message queues, authentication systems, cloud services).
-
Generate Architecture Decision Records (ADRs): For each distinct technology identified, create one ADR using the specified Markdown template.
- Filename Convention:
adr-{number}-{technology-name-lowercase-with-dashes}.md(e.g.,adr-001-react.md,adr-002-postgresql.md). - Numbering: Start ADRs sequentially from
001(or continue existing numbering if context is provided). Use zero-padded numbers for consistency. - File Location: Place all generated ADR Markdown files into a folder named
adrswithin the project's archive documentation directory (e.g.,documentation/Documents/archive/adrs/adr-001-react.md, matching this repository's existing ADR location).
- Filename Convention:
-
ADR Template: Use the following structure for each ADR file:
```markdown
ADR {number}: Use of
Status
Accepted (or Proposed/Deprecated - generally "Accepted" for existing systems)
Context
Describe the context and concrete evidence from the repository indicating the use of this technology (e.g., specific file paths, dependency declarations, configuration snippets, code patterns). Clearly state if this ADR is reverse-engineered due to a lack of original documentation.
Decision
The original reasons for adopting this technology are not known and could not be extracted from the code or available documentation.
Consequences
Describe the architectural and operational impact of adopting this technology. Include both benefits (e.g., scalability, developer productivity, feature set) and limitations/trade-offs (e.g., learning curve, operational overhead, vendor lock-in).
References
- Link to relevant repository files or lines (e.g.,
[package.json](link/to/package.json)). - Official technology documentation (e.g.,
[React Docs](https://react.dev/)). - Any other pertinent resources that informed this ADR.
Notes
- Date Created: {YYYY-MM-DD - e.g., 2025-07-18}
- Generated By: AI Assistant {generated_by -e.g., Gemini 1.5 Pro} - This document was created through automated analysis and may require human review for complete accuracy. ```
- Link to relevant repository files or lines (e.g.,
Final Output
After generating all ADR Markdown files, provide a summary list of all the created ADR filenames, including their full path within the documentation/Documents/archive/adrs/ folder (e.g., documentation/Documents/archive/adrs/adr-001-react.md, documentation/Documents/archive/adrs/adr-002-postgresql.md, etc.).