incubator-devlake
AGENTS.md3.2k starsChanged 3 years agoApache-2.0View on GitHub
http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> # Apache DevLake - AI Coding Agent Instructions
Trending
Quiet since June.about the whole repository
Who's talking about apache/incubator-devlake
- apache/devlake“[Feature] ArgoCD Integration”GitHub · May 16, 2023 · 42 reactions
- apache/devlake“[Feature][Plugin] Opsgenie Plugin”GitHub · Sep 11, 2023 · 20 reactions
- apache/devlake“fix(gitextractor): subtask Clone Git Repo ended unexpectedly”GitHub · Oct 9, 2024 · 16 reactions
- apache/devlake“[Bug][DORA-change_lead_time_calculator] Wrong deployment reference”GitHub · Nov 12, 2024 · 15 reactions
- apache/devlake“[Feature] Create a terraform provider for devlake”GitHub · Oct 30, 2023 · 12 reactions
The biggest 5 of 51 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 51
Talked about on GitHub and Hacker News (51 times).
On GitHub · 50
- May 16, 2023[Feature] ArgoCD Integration — apache/devlake42 reactions · 89 comments
- Sep 11, 2023[Feature][Plugin] Opsgenie Plugin — apache/devlake20 reactions · 13 comments
- Oct 9, 2024fix(gitextractor): subtask Clone Git Repo ended unexpectedly — apache/devlake16 reactions · 1 comment
- Nov 12, 2024[Bug][DORA-change_lead_time_calculator] Wrong deployment reference — apache/devlake15 reactions · 20 comments
- Oct 30, 2023[Feature] Create a terraform provider for devlake — apache/devlake12 reactions · 17 comments
45 more on GitHub
- Oct 13, 2025feat(plugins): initial implementation of argocd — apache/devlake7 reactions
- Mar 31, 2023[Feature][SonarQube Connection] Add support for SonarCloud — apache/devlake7 reactions · 42 comments
- Sep 15, 2025[Feature][Azure DevOps] Deployments after partially succeeded builds — apache/devlake6 reactions
- Jul 3, 2025[Bug][GitHub] Error extracting GitHub data - incorrect datetime value — apache/devlake6 reactions · 10 comments
- Mar 28, 2025[Feature][PagerDuty] Add Scope Config for PagerDuty Connection — apache/devlake6 reactions · 9 comments
- Dec 22, 2023[Feature][DORA] Mono-repo support — apache/devlake6 reactions · 7 comments
- Mar 21, 2026[Bug][DORA-change_lead_time_calculator] Wrong deployment reference — apache/devlake5 reactions · 4 comments
- Aug 28, 2024[Feature][devlake] mysql connection config from environment variables — apache/devlake5 reactions · 4 comments
- Feb 11, 2026[Bug][Bitbucket] Extract Pull Requests fails on microsecond timestamp parsing — apache/devlake4 reactions · 5 comments
- Jan 9, 2026Home Page: Slack invite link no longer valid — apache/devlake4 reactions · 3 comments
- Aug 19, 2025[Feature][GitHub] Update models in real time with GitHub events — apache/devlake4 reactions · 6 comments
- May 15, 2025[Bug][Github] Incorrect datetime value: '0000-00-00' for column 'started_at' — apache/devlake4 reactions · 45 comments
- Sep 10, 2024[Bug][Github] GraphQL API requests will eventually fail forever collecting large repositories data — apache/devlake4 reactions · 7 comments
- Sep 9, 2024[Bug][github_graphql] issue_collector gets stuck at Collect Issues task for Github enterprise — apache/devlake4 reactions · 30 comments
- Feb 12, 2026[Feature][AI_Adoption] Add AI Adoption metrics — apache/devlake3 reactions · 8 comments
- Oct 22, 2025[Bug][pipeline] Devlake instance crashes on pipelineServiceInit after image update — apache/devlake3 reactions · 2 comments
- Jul 10, 2025[Bug][CircleCI] plugin fails on second (incremental) data collection due to SQL error: unknown column created_date — apache/devlake3 reactions · 8 comments
- May 6, 2025[Bug][Gitextractor] Git extractor plugin fails with mutliple github tokens — apache/devlake3 reactions · 7 comments
- Apr 23, 2025fix(extractIssues): return error when mysql connection error happens — apache/devlake3 reactions
- Feb 7, 2025[Feature][GitHub] allow filtering PRs. — apache/devlake3 reactions · 20 comments
- Jan 29, 2025[Bug][lake] can not edit scope config — apache/devlake3 reactions · 7 comments
- Nov 12, 2024[Bug][GitLab] GitLab Pagination not working again — apache/devlake3 reactions · 5 comments
- Sep 17, 2024feat: Generic webhook — apache/devlake3 reactions · 6 comments
- Aug 27, 2024[Bug][Github] GraphQL collector fails on transferred issues — apache/devlake3 reactions · 12 comments
- Aug 26, 2024[Bug][gitextractor] subtask Clone Git Repo ended unexpectedly — apache/devlake3 reactions · 35 comments
- Feb 13, 2024chore: adds support for IPv6 in nginx — apache/devlake3 reactions · 6 comments
- May 23, 2023[Feature][DORA?] Support trunk-based development in Lead Time calculation — apache/devlake3 reactions · 33 comments
- Jun 9, 2022Add more context to error messages — apache/devlake3 reactions · 6 comments
- Jun 10, 2026fix(bitbucket): migrate off cross-workspace APIs removed by CHANGE-2770 — apache/devlake2 reactions · 4 comments
- Apr 29, 2026feat(ui): implement dark theme and refactor color usage — apache/devlake2 reactions
- Apr 26, 2026[Bug][CI] build.yml fails with startup_failure due to non-allowlisted GitHub Actions — apache/devlake2 reactions
- Apr 9, 2026[Bug][Grafana] team-related dashboards are failing with non-numeric IDs — apache/devlake2 reactions · 2 comments
- Jan 20, 2026[Question][Artifacts] v1.0.3-beta9 does not contain docker artifacts — apache/devlake2 reactions · 5 comments
- Dec 17, 2025[Feature][Plugin] Add Python Plugin for GitHub Copilot Enterprise & User Usage Metrics — apache/devlake2 reactions · 11 comments
- Nov 5, 2025[Bug][CircleCI] Unable to detect any circleci projects — apache/devlake2 reactions · 10 comments
- Oct 23, 2025[Bug][config-ui] After upgrade the config UI is stuck — apache/devlake2 reactions · 10 comments
- Sep 3, 2025[Bug][Jira] V2 API removed — apache/devlake2 reactions · 14 comments
- Aug 29, 2025[Bug][Jira] Unmarshal error for epic description with rich text — apache/devlake2 reactions · 5 comments
- Apr 17, 2025[Refactor][GitHub] Switch to GraphQL only use — apache/devlake2 reactions · 6 comments
- Mar 11, 2025[Bug][Sonarcloud] Error 1406 (22001): Data too long for column 'project_key' at row 1 — apache/devlake2 reactions · 13 comments
- Feb 24, 2025[Bug][github_graphql] Incorrect dora calculation based on github deployments updated_at — apache/devlake2 reactions · 3 comments
- Jan 2, 2025[Bug][GitLab] Missing the notes of Merge Request — apache/devlake2 reactions · 8 comments
- Aug 2, 2024[Bug][Jira] issues disappearing from dataset, progressive load issue? — apache/devlake2 reactions · 49 comments
- Jul 3, 2024[BUG].[REFDIFF].[PLUGIN] - 'SELECT * FROM refs ORDER BY created_date desc' taking too long — apache/devlake2 reactions · 10 comments
- Apr 19, 2024[Bug][config-ui] Edit Data Scope and Scope Config fails to load with too many scopes — apache/devlake2 reactions · 8 comments
On Hacker News · 1
Where files are headingNew AGENTS.md files have more rules about keeping secrets out of the code, and fewer about code style.
Of the AGENTS.md files we read, the 31,439 first seen in the last six months, against the older ones: the kind of rule that gained most share, and the kind that lost most. About files like this in general, not this one, and an estimate, since a kind is a pattern in the words.
The file
We split this AGENTS.md into the rules it gives an agent
4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 70
Use helper.NewStatefulApiCollector for incremental collection with time-based bookmarking
- Very specific: line 104
Place *_test.go files alongside source.
- Very specific: line 107
Use CSV fixtures in e2e/ directory.
- Distinctive: line 125
All plugins must be independent - no cross-plugin imports
≈ “Common” is an estimate: at least 1 in 5 of the 40,246 AGENTS.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->Apache DevLake - AI Coding Agent Instructions
Project Overview
Apache DevLake is a dev data platform that ingests data from DevOps tools (GitHub, GitLab, Jira, Jenkins, etc.), transforms it into standardized domain models, and enables metrics/dashboards via Grafana.
Architecture
Three-Layer Data Model
- Raw Layer (
_raw_*tables): JSON data collected from APIs, stored for replay/debugging - Tool Layer (
_tool_*tables): Plugin-specific models extracted from raw data - Domain Layer (standardized tables): Normalized models in backend/core/models/domainlayer/ - CODE, TICKET, CICD, CODEREVIEW, CODEQUALITY, CROSS
Key Components
- backend/: Go server + plugins (main codebase)
- backend/python/: Python plugin framework via RPC
- config-ui/: React frontend (TypeScript, Vite, Ant Design)
- grafana/: Dashboard definitions
Plugin Development (Go)
Plugin Structure
Each plugin in backend/plugins/<name>/ follows this layout:
api/ # REST endpoints (connections, scopes, scope-configs)
impl/ # Plugin implementation (implements core interfaces)
models/ # Tool layer models + migrationscripts/
tasks/ # Collectors, Extractors, Converters
e2e/ # Integration tests with CSV fixturesRequired Interfaces
See backend/plugins/gitlab/impl/impl.go for reference:
PluginMeta: Name, Description, RootPkgPathPluginTask: SubTaskMetas(), PrepareTaskData()PluginModel: GetTablesInfo() - must list all models or CI failsPluginMigration: MigrationScripts() for DB schema evolutionPluginSource: Connection(), Scope(), ScopeConfig()
Subtask Pattern (Collector → Extractor → Converter)
// 1. Register subtask in tasks/register.go via init()
func init() {
RegisterSubtaskMeta(&CollectIssuesMeta)
}
// 2. Define dependencies for execution order
var CollectIssuesMeta = plugin.SubTaskMeta{
Name: "Collect Issues",
Dependencies: []*plugin.SubTaskMeta{}, // or reference other metas
}API Collectors
- Use
helper.NewStatefulApiCollectorfor incremental collection with time-based bookmarking - See backend/plugins/gitlab/tasks/issue_collector.go
Migration Scripts
- Located in
models/migrationscripts/ - Register all scripts in
register.go'sAll()function - Version format:
YYYYMMDD_description.go
Build & Development Commands
# From repo root
make dep # Install Go + Python dependencies
make build # Build plugins + server
make dev # Build + run server
make godev # Go-only dev (no Python plugins)
make unit-test # Run all unit tests
make e2e-test # Run E2E tests
# From backend/
make swag # Regenerate Swagger docs (required after API changes)
make lint # Run golangci-lintRunning Locally
docker-compose -f docker-compose-dev.yml up mysql grafana # Start deps
make dev # Run server on :8080
cd config-ui && yarn && yarn start # UI on :4000Testing
Unit Tests
Place *_test.go files alongside source. Use mocks from backend/mocks/.
E2E Tests for Plugins
Use CSV fixtures in e2e/ directory. See backend/test/helper/ for the Go test client that can spin up an in-memory DevLake instance.
Integration Testing
helper.ConnectLocalServer(t, &helper.LocalClientConfig{
ServerPort: 8080,
DbURL: "mysql://merico:merico@127.0.0.1:3306/lake",
CreateServer: true,
Plugins: []plugin.PluginMeta{gitlab.Gitlab{}},
})Python Plugins
Located in backend/python/plugins/. Use Poetry for dependencies. See backend/python/README.md.
Code Conventions
- Tool model table names:
_tool_<plugin>_<entity>(e.g.,_tool_gitlab_issues) - Domain model IDs: Use
didgen.NewDomainIdGeneratorfor consistent cross-plugin IDs - All plugins must be independent - no cross-plugin imports
- Apache 2.0 license header required on all source files
Common Pitfalls
- Forgetting to add models to
GetTablesInfo()failsplugins/table_info_test.go - Migration scripts must be added to
All()inregister.go - API changes require running
make swagto update Swagger docs gitextractorshells out to thegitCLI; no git library or cgo is required
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

