dragonfly
Copilot instructions3.4k starsChanged 3 years agoApache-2.0View on GitHub
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here. Dragonfly is a CNCF Graduated project that delivers efficient, stable, and secure data distribution and acceleration powered by P2P technology. It provides an optional content-addressable filesystem that accelerates OCI container launch. The project targets cloud-native architectures and large-scale delivery of files, container images, OCI artifacts, AI/ML models, caches, logs, and dependencies. Dragonfly consists of the…
- Pipes a download into a shell
- Deletes or force-pushes
- Installs packages
We split this copilot-instructions.md into the rules it gives an agent
20 rules. About 2 are common, 9 are distinctive, and 9 are very specific to this project.
≈2
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 3
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does …
- Distinctive: line 175
Run different test suites with appropriate timeouts:
- Distinctive: line 199
Test the built applications:
- Distinctive: line 219
Always run these commands before committing changes:
- Distinctive: line 234
After making changes, always validate:
- Common: line 236
Build Success: All Go components build without errors
- Distinctive: line 238
Help Commands: All help text displays correctly
- Common: line 239
Linting: No linting errors introduced
- Distinctive: line 253
CRITICAL: NEVER CANCEL long-running commands.
- Distinctive: line 259
Every Go source file must begin with the Apache 2.0 license header:
- Very specific: line 302
Use d7y.io/dragonfly/v2/internal/dferrors for Dragonfly-specific error types
- Very specific: line 303
Use fmt.Errorf("context: %w", err) for wrapping errors
- Very specific: line 308
Use d7y.io/dragonfly/v2/internal/dflog (zap-based structured logger)
- Very specific: line 314
All configs embed base.Options from cmd/dependency/base for shared CLI options
- Very specific: line 322
All gRPC services implement health checking (grpc_health_probe)
- Very specific: line 339
Use -race flag for race condition detection (already set in make test)
- Very specific: line 340
Test fixtures go in testdata/ directories next to the tests
- Very specific: line 452
Use build-manager-server and build-scheduler instead.
- Very specific: line 464
command not found: Add $(go env GOPATH)/bin to PATH for installed Go tools. - Distinctive: line 477
Always build and validate binary functionality after code changes to ensure nothing is broken.
≈ “Common” is an estimate: at least 1 in 5 of the 3,669 Copilot instructions 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
Dragonfly P2P File Distribution System
Always reference these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.
Project Overview
Dragonfly is a CNCF Graduated project that delivers efficient, stable, and secure data distribution and acceleration powered by P2P technology. It provides an optional content-addressable filesystem that accelerates OCI container launch. The project targets cloud-native architectures and large-scale delivery of files, container images, OCI artifacts, AI/ML models, caches, logs, and dependencies.
- Website: https://d7y.io
- Module path:
d7y.io/dragonfly/v2 - Go version: 1.25.5
- Current version: v2.4.0
- License: Apache 2.0
Architecture
Dragonfly consists of the following components:
Components in this repository
| Component | Binary | Default Ports | Description |
| Manager | manager | gRPC :65003, REST :8080 | Cluster management, peer lifecycle, dynamic configuration, web console |
| Scheduler | scheduler | gRPC :8002 | Optimizes P2P download scheduling and task routing |
Submodule components
| Submodule | Repository | Description |
client/ | dragonflyoss/client | Rust-based dfdaemon (dfget, dfcache, dfstore, proxy) |
manager/console/ | dragonflyoss/console | Node.js/React web console frontend for manager |
deploy/helm-charts/ | dragonflyoss/helm-charts | Kubernetes Helm charts for deploying Dragonfly |
Data Flow
Client (dfdaemon/dfget) → Scheduler → Manager
↓
Seed Peer / Origin Server- Manager: stores cluster configuration in MySQL/PostgreSQL and caches in Redis; exposes both gRPC and REST APIs
- Scheduler: stateless gRPC service that manages the P2P DAG (task graph); stores transient state in Redis
- Client (dfdaemon): runs on each node; intercepts HTTP/HTTPS requests and coordinates peer-to-peer downloads
Repository Structure
Key Directories
cmd/
manager/ # Manager binary entry point (main.go)
scheduler/ # Scheduler binary entry point (main.go)
dependency/ # Shared CLI base options (base.Options) and plugin/version commands
manager/ # Manager service implementation
config/ # Configuration structs and defaults (GRPC :65003, REST :8080)
handlers/ # Gin HTTP request handlers
router/ # HTTP router setup
rpcserver/ # gRPC server implementation
service/ # Business logic
models/ # GORM database models
database/ # Database initialization (MySQL, MariaDB, PostgreSQL)
middlewares/ # Authentication, CORS, rate-limiting middleware
job/ # Async job processing (dragonflyoss/machinery)
metrics/ # Prometheus metrics
searcher/ # Scheduler cluster selection logic
auth/ # JWT authentication
permission/ # Casbin RBAC authorization
gc/ # Garbage collection
scheduler/ # Scheduler service implementation
config/ # Configuration structs and defaults (port :8002)
scheduling/ # Core P2P scheduling algorithms and evaluators
resource/ # In-memory peer/task/host resource management
rpcserver/ # gRPC server implementation
service/ # Business logic
announcer/ # Announces scheduler to manager
job/ # Task job handling
metrics/ # Prometheus metrics
pkg/ # Shared libraries
auth/ # Authentication utilities
balancer/ # gRPC load balancing
cache/ # Cache utilities
container/ # Container helpers
dfnet/ # Network type definitions
dfpath/ # Standard Dragonfly paths (/var/lib/dragonfly, /var/log/dragonfly)
digest/ # Content digest (SHA-256, MD5, etc.)
gc/ # Generic garbage collection framework
graph/ # DAG implementation for task graphs
idgen/ # ID generation for tasks, peers, hosts
math/ # Math utilities
net/ # Network utilities (IP, FQDN, HTTP)
os/ # OS utilities
redis/ # Redis client wrapper
rpc/ # gRPC client wrappers (manager, scheduler, dfdaemon)
slices/ # Generic slice utilities
strings/ # String utilities
structure/ # Data structure utilities
time/ # Time utilities
types/ # Shared type definitions
internal/ # Internal packages (not importable externally)
dferrors/ # Dragonfly error types
dflog/ # Structured logging (zap-based)
dfplugin/ # Plugin system
dynconfig/ # Dynamic configuration (polls manager for config updates)
job/ # Shared job utilities
ratelimiter/ # Rate limiter
api/
manager/ # Swagger/OpenAPI generated docs for manager REST API
version/ # Version variables injected at build time
test/
e2e/ # End-to-end tests using Ginkgo (require Docker)
testdata/ # Shared test fixtures
deploy/
docker-compose/ # Docker Compose setup (manager + scheduler + Redis + MySQL)
helm-charts/ # Kubernetes Helm charts (submodule)
hack/ # Build and utility scripts
build.sh # Primary build script
env.sh # Build environment variables
install.sh # Binary installation script
markdownlint.sh # Markdown lint runnerBuild Artifacts
bin/linux_amd64/: Built binaries (created by build process)coverage.txt: Accumulated test coverage reports
Important Files
Makefile: All build, test, and lint targets — runmake helpto see allgo.mod: Go module definition (moduled7y.io/dragonfly/v2, Go 1.25.5).golangci.yml: Linting configuration (golangci-lint v2).markdownlint.yml: Markdown linting rules
Working Effectively
Bootstrap and Build Process
Install required dependencies and build the project:
# Install Go tools (required for linting and testing)
curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin
go install github.com/onsi/ginkgo/v2/ginkgo@latest
export PATH=$PATH:$(go env GOPATH)/bin
# Build Go server components (takes ~1.5 minutes)
make build-manager-server build-scheduler
# NEVER CANCEL: Build takes 2 minutes. Set timeout to 5+ minutes.
# Verify build success
ls -la bin/linux_amd64/
./bin/linux_amd64/scheduler version
./bin/linux_amd64/manager versionCRITICAL: The full make build target will fail because build-manager-console requires the
manager/console Node.js submodule which is not initialized by default. Always use
build-manager-server and build-scheduler to build only the Go server components.
Testing
Run different test suites with appropriate timeouts:
# Format and vet code (takes ~20 seconds)
make fmt vet
# NEVER CANCEL: Set timeout to 2+ minutes.
# Run linting (takes ~1.5 minutes)
make markdownlint # Takes ~5 seconds
golangci-lint run --timeout=10m # Takes ~1.5 minutes
# NEVER CANCEL: Linting takes 2 minutes total. Set timeout to 5+ minutes.
# Run unit tests (takes ~3.5 minutes, may have some failures in fresh environment)
make test
# NEVER CANCEL: Unit tests take 4 minutes. Set timeout to 10+ minutes.
# Note: Some tests may fail in sandboxed environments, this is expected.
# Run E2E tests (requires Docker and longer setup)
make e2e-test
# NEVER CANCEL: E2E tests take 10+ minutes. Set timeout to 30+ minutes.Running Applications
Test the built applications:
# Test CLI help (validates binaries work correctly)
./bin/linux_amd64/scheduler --help
./bin/linux_amd64/manager --help
# Test version commands (validates build was successful)
./bin/linux_amd64/scheduler version
./bin/linux_amd64/manager versionImportant: You cannot run the full Dragonfly system in a sandboxed environment without proper network configuration, certificates, Redis, and a relational database. The components require complex setup with network connectivity between peers.
Validation Requirements
Pre-commit Validation
Always run these commands before committing changes:
# NEVER CANCEL: Full precheck takes 8 minutes. Set timeout to 15+ minutes.
make fmt vet
golangci-lint run --timeout=10m
make build-manager-server build-scheduler
# Test that binaries still work
./bin/linux_amd64/scheduler version
./bin/linux_amd64/manager versionScenario Testing
After making changes, always validate:
- Build Success: All Go components build without errors
- Binary Functionality: Version commands execute successfully
- Help Commands: All help text displays correctly
- Linting: No linting errors introduced
Timing Expectations
| Command | Duration | Timeout Recommendation |
make fmt vet | 20 seconds | 2 minutes |
make markdownlint | 5 seconds | 1 minute |
golangci-lint run | 1.5 minutes | 5 minutes |
| Build (Go only) | 1.5 minutes | 5 minutes |
make test | 3.5 minutes | 10 minutes |
make e2e-test | 10+ minutes | 30 minutes |
| Full precheck | 8 minutes | 15 minutes |
CRITICAL: NEVER CANCEL long-running commands. Builds and tests are CPU-intensive and require time to complete.
Code Conventions
License Header
Every Go source file must begin with the Apache 2.0 license header:
/*
* Copyright <YEAR> The Dragonfly Authors
*
* Licensed 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.
*/Import Ordering
Imports must be organized in exactly four groups (enforced by gci linter):
import (
// 1. Standard library
"context"
"fmt"
// 2. Third-party dependencies
"github.com/gin-gonic/gin"
// 3. d7y.io/api packages
"d7y.io/api/v2/pkg/apis/scheduler/v1"
// 4. d7y.io/dragonfly/v2 packages (this module)
"d7y.io/dragonfly/v2/pkg/idgen"
)Error Handling
- Use
d7y.io/dragonfly/v2/internal/dferrorsfor Dragonfly-specific error types - Use
fmt.Errorf("context: %w", err)for wrapping errors - The
errchecklinter enforces that all errors are handled
Logging
- Use
d7y.io/dragonfly/v2/internal/dflog(zap-based structured logger) - Log fields use
zap.String,zap.Int, etc.
Configuration
- Configuration structs use both
yamlandmapstructurestruct tags - All configs embed
base.Optionsfromcmd/dependency/basefor shared CLI options - Config files default to
/etc/dragonfly/manager.yamland/etc/dragonfly/scheduler.yaml - Dynamic configuration is polled from the manager via gRPC
gRPC
- Proto definitions are in the separate
d7y.io/api/v2module - gRPC client wrappers are in
pkg/rpc/(manager, scheduler, dfdaemon clients) - All gRPC services implement health checking (
grpc_health_probe)
REST API (Manager only)
- Built with Gin framework (
github.com/gin-gonic/gin) - Swagger docs generated with
swag— runmake swagto regenerate - Generated files are in
api/manager/ - Routes defined in
manager/router/ - Handlers in
manager/handlers/ - JWT authentication via
github.com/appleboy/gin-jwt/v2 - RBAC authorization via Casbin (
github.com/casbin/casbin/v2)
Testing Patterns
- Unit tests use the standard
testingpackage and live alongside source in_test.gofiles - Mocks are generated with mockery and placed in
mocks/subdirectories - E2E tests use Ginkgo v2 and are located in
test/e2e/ - Use
-raceflag for race condition detection (already set inmake test) - Test fixtures go in
testdata/directories next to the tests
Configuration Overview
Manager Configuration (/etc/dragonfly/manager.yaml)
Key sections:
server:
grpc:
port: { start: 65003, end: 65003 } # gRPC port range
rest:
addr: ":8080" # REST API address
database:
type: mysql # mysql | mariadb | postgres
mysql:
host: localhost
port: 3306
db: manager
cache:
redis:
addrs: ["localhost:6379"]Scheduler Configuration (/etc/dragonfly/scheduler.yaml)
Key sections:
server:
port: 8002 # gRPC port
advertisePort: 8002
scheduler:
algorithm: default # Scheduling algorithm
backToSourceCount: 200 # Max peers that can download from origin
database:
redis:
addrs: ["localhost:6379"]
manager:
addr: "localhost:65003" # Manager gRPC addressDeployment
Docker Compose (Development)
cd deploy/docker-compose
# Edit config files in ./config/ as needed
docker compose up -dServices started: Redis, MySQL, Manager (gRPC :65003, REST :8080), Scheduler (:8002), Client (seed + regular)
Kubernetes (Helm)
The deploy/helm-charts/ submodule contains Helm charts. Initialize it first:
git submodule update --init deploy/helm-charts
helm install dragonfly deploy/helm-charts/charts/dragonflyExternal Dependencies
| Dependency | Purpose | Required by |
| Redis | Cache, job queue, scheduler state | Manager, Scheduler |
| MySQL/MariaDB | Persistent storage (config, metadata) | Manager |
| PostgreSQL | Alternative to MySQL | Manager |
Common Tasks
View All Build Targets
make helpClean Build
make clean
rm -rf bin/Add/Update Dependencies
go mod tidy
go mod downloadRegenerate Swagger API Docs
make swag
# Output: api/manager/Initialize Submodules
git submodule update --init --recursiveTroubleshooting
Build Issues
build-manager-consolefails: Expected — themanager/consolefrontend submodule is not initialized. Usebuild-manager-serverandbuild-schedulerinstead.- Missing tools: Install golangci-lint and ginkgo as shown in the bootstrap section.
- Go version: Requires Go 1.25.5 as specified in
go.mod.
Test Issues
- Unit test failures: Some tests may fail in sandboxed environments due to network/permission restrictions. This is expected.
- E2E test failures: Require Docker and a running Dragonfly cluster. May not work in all environments.
Runtime Issues
command not found: Add$(go env GOPATH)/bintoPATHfor installed Go tools.- Binary execution: Built binaries are in
bin/linux_amd64/directory.
Development Workflow
- Make changes to Go source files
- Format and vet:
make fmt vet - Build:
make build-manager-server build-scheduler - Verify binaries:
./bin/linux_amd64/manager versionand./bin/linux_amd64/scheduler version - Lint:
golangci-lint run --timeout=10m - Unit test:
make test(optional, may fail in sandbox) - Commit changes
Always build and validate binary functionality after code changes to ensure nothing is broken.
Trending
Quiet this year.about the whole repository
Who's talking about dragonflyoss/dragonfly
- dragonflyoss/dragonfly-archived“[feature] hijack https requests with self-signed certificates”GitHub · May 10, 2019 · 6 reactions
- dragonflyoss/dragonfly-archived“doc: add roadmap doc for better community building”GitHub · Jan 7, 2019 · 6 reactions
- @jauntywunderkind.bsky.social“The Spanner of my heart is ripgrep and some Dragonfly wildness or some such. Then many many many projected …”Bluesky · Nov 27, 2025 · 5 likes
- dragonflyoss/dragonfly-archived“[Help wanted] Dragonfly decentralization”GitHub · Oct 25, 2019 · 5 reactions
- dragonflyoss/dragonfly-archived“feature: enable viper for supernode”GitHub · Oct 2, 2019 · 5 reactions
The biggest 5 of 53 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 53
Talked about on GitHub, Hacker News, Bluesky and Stack Overflow (53 times).
On GitHub · 50
- May 10, 2019[feature] hijack https requests with self-signed certificates — dragonflyoss/dragonfly-archived6 reactions · 9 comments
- Jan 7, 2019doc: add roadmap doc for better community building — dragonflyoss/dragonfly-archived6 reactions · 8 comments
- Oct 25, 2019[Help wanted] Dragonfly decentralization — dragonflyoss/dragonfly-archived5 reactions · 4 comments
- Oct 2, 2019feature: enable viper for supernode — dragonflyoss/dragonfly-archived5 reactions · 8 comments
- Jan 23, 2019[Roadmap] Golang Refactoring Plan of the Whole Dragonfly Project — dragonflyoss/dragonfly-archived5 reactions · 12 comments
45 more on GitHub
- Jan 3, 2019doc: The first draft of the design document — dragonflyoss/dragonfly-archived5 reactions · 5 comments
- Dec 28, 2018feature: Define supernode components and interfaces — dragonflyoss/dragonfly-archived4 reactions · 4 comments
- Dec 18, 2018docs: update copyright header of source file — dragonflyoss/dragonfly-archived4 reactions · 5 comments
- Jun 26, 2024[Graduation] Dragonfly Graduation Application — cncf/toc3 reactions · 27 comments
- Mar 6, 2020Feature: support custom protocol — dragonflyoss/dragonfly-archived3 reactions · 1 comment
- Nov 12, 2019feature:modify supernode 1.0 bridge — dragonflyoss/dragonfly-archived3 reactions · 9 comments
- Oct 25, 2019feature: add weight for node config — dragonflyoss/dragonfly-archived3 reactions · 4 comments
- Oct 24, 2019bugfix: delete the default value for supernodes from dfdaemon — dragonflyoss/dragonfly-archived3 reactions · 4 comments
- Sep 12, 2019bugfix:fix the bug blanklist can't work — dragonflyoss/dragonfly-archived3 reactions · 2 comments
- Sep 12, 2019rm the same func IsEmptyStr of different package — dragonflyoss/dragonfly-archived3 reactions · 2 comments
- Aug 11, 2019Add dfget and dfdaemon properties document — dragonflyoss/dragonfly-archived3 reactions · 9 comments
- Jul 30, 2019bugfix: the dfget will wait forever when the final piece failed — dragonflyoss/dragonfly-archived3 reactions · 3 comments
- Feb 1, 2019bugfix: fix rotating log makes dfdaemon.log file huge size — dragonflyoss/dragonfly-archived3 reactions · 4 comments
- Jan 7, 2019docs: support private image which needs user/passwd for remote registries — dragonflyoss/dragonfly-archived3 reactions · 7 comments
- Dec 25, 2018docs: update installing documents and quick-start — dragonflyoss/dragonfly-archived3 reactions · 3 comments
- Dec 23, 2018refactor: unify the developing and test environment — dragonflyoss/dragonfly-archived3 reactions · 10 comments
- May 21, 2025Dragonfly governance follow-up items — dragonflyoss/community2 reactions · 8 comments
- Oct 17, 2024docs: add the threat model for the security document — dragonflyoss/d7y.io2 reactions
- Jun 2, 2020optimize: release allocated ByteBuffer explicitly — dragonflyoss/dragonfly-archived2 reactions · 3 comments
- Jan 14, 2020feature: Hijack HTTPS by generating leaf TLS certs on the fly issued by user provided CA. — dragonflyoss/dragonfly-archived2 reactions · 7 comments
- Dec 12, 2019bugfix:modify the words spelling mistakes — dragonflyoss/dragonfly-archived2 reactions · 7 comments
- Nov 18, 2019feature: add 'config default' command to print the default configuration of components — dragonflyoss/dragonfly-archived2 reactions · 9 comments
- Oct 13, 2019[WIP]feature: add schedule plugin — dragonflyoss/dragonfly-archived2 reactions · 7 comments
- Oct 8, 2019doc: add a doc about how to configure supernode,dfget,dfdaemon — dragonflyoss/dragonfly-archived2 reactions · 4 comments
- Sep 25, 2019docs: update the metrics as a table — dragonflyoss/dragonfly-archived2 reactions · 4 comments
- Sep 21, 2019Improve the quality of comments in the documents — dragonflyoss/dragonfly-archived2 reactions · 12 comments
- Sep 20, 2019Using GOPROXY environment variables if set instead of default value — dragonflyoss/dragonfly-archived2 reactions · 14 comments
- Sep 18, 2019dfget config and properties are duplicate — dragonflyoss/dragonfly-archived2 reactions · 5 comments
- Sep 12, 2019clean up submodule beego — dragonflyoss/dragonfly-archived2 reactions
- Aug 28, 2019Add Continuous Fuzzing via Fuzzit — dragonflyoss/dragonfly-archived2 reactions · 18 comments
- Aug 23, 2019gc bug fix — dragonflyoss/dragonfly-archived2 reactions · 9 comments
- Aug 14, 2019feature: replace gometalinter with golangci-lint — dragonflyoss/dragonfly-archived2 reactions · 3 comments
- Aug 13, 2019feature: enable staticcheck — dragonflyoss/dragonfly-archived2 reactions · 7 comments
- Aug 12, 2019feature: add boilerplate check script — dragonflyoss/dragonfly-archived2 reactions · 6 comments
- Aug 12, 2019docs: add EddieHuang as a maintainer — dragonflyoss/dragonfly-archived2 reactions · 5 comments
- Jul 26, 2019feature: support non-ipv4 format node address for Dragonfly dfclient — dragonflyoss/dragonfly-archived2 reactions · 14 comments
- Jul 11, 2019feature: add support for prometheus metrics — dragonflyoss/dragonfly-archived2 reactions · 6 comments
- Jun 25, 2019 docs:modify some spelling mistakes in the doc — dragonflyoss/dragonfly-archived2 reactions · 6 comments
- May 23, 2019dfget --node flag can specify the port of supernodes — dragonflyoss/dragonfly-archived2 reactions · 4 comments
- May 8, 2019fix: fix ineffectual assignments — dragonflyoss/dragonfly-archived2 reactions · 6 comments
- Apr 11, 2019feature: add transparent proxy to extend dfdaemon's proxy mode — dragonflyoss/dragonfly-archived2 reactions · 11 comments
- Feb 22, 2019feature: add scripts to build rpm and deb packages for dfdaemon and dfget — dragonflyoss/dragonfly-archived2 reactions · 10 comments
- Jan 25, 2019feature: implement the rate limit feature — dragonflyoss/dragonfly-archived2 reactions · 1 comment
- Jan 14, 2019Case Study: Dragonfly adoption in DCOS of China Mobile Group Zhejiang Co., Ltd — dragonflyoss/dragonfly-archived2 reactions · 6 comments
- Dec 10, 2018refactor: use cobra to implement the dfget client — dragonflyoss/dragonfly-archived2 reactions · 9 comments
On Hacker News · 1
- Sep 18, 2019Dragonfly: P2P File Distribution System3 points
On Bluesky · 1
- Nov 27, 2025The Spanner of my heart is ripgrep and some Dragonfly wildness or some such. Then many many many projected views. github.com/dragonflyoss... — @jauntywunderkind.bsky.social5 likes and reposts
On Stack Overflow · 1
Where files are headingNew Copilot instructions files have more rules about branches and pull requests, and fewer about code style.
Of the Copilot instructions files we read, the 2,297 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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
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.

