From argos
DigitalOcean Spaces (DOS) S3-compatible object storage disipline — bucket design (env prefix, purpose-based, lowercase DNS-safe), access control (default private, bucket policy, CORS explicit), pre-signed URL (15dk expire, Content-Length + Content-Type conditions), lifecycle (Expiration + Abort incomplete MPU), versioning yok / WORM app-level, CDN edge cache (built-in Cloudflare, custom domain + Let's Encrypt, Cache-Control immutable), performance (multipart > 100MB, parallel 4-8, intra-region ücretsiz), cost (250GB+1TB free, lifecycle ghost cost önle), DR (rclone cross-region replication), encryption (TLS 1.2+, SSE managed; SSE-C yok).
npx claudepluginhub resultakak/argos --plugin argosThis skill uses the workspace's default tool permissions.
`agents/shared/severity-rubric.md` ve `agents/shared/escalation-matrix.md`
Mandates invoking relevant skills via tools before any response in coding sessions. Covers access, priorities, and adaptations for Claude Code, Copilot CLI, Gemini CLI.
Share bugs, ideas, or general feedback.
agents/shared/severity-rubric.md ve agents/shared/escalation-matrix.md
default-load sayılır (agents/coordination.md §11). Bu skill'in çıktısı
Critical / High / Medium / Low + kanıt formatında olmak zorunda — spekülatif
Critical yasak. Sahiplik dışı bulgu ilgili agent'a delege; karar yetkisi eşiği
aşılırsa kullanıcı onayı zorunlu.
rclone cron.# AWS CLI Spaces endpoint
aws --endpoint-url https://fra1.digitaloceanspaces.com s3 ls
aws --endpoint-url https://fra1.digitaloceanspaces.com s3api list-buckets
aws --endpoint-url https://fra1.digitaloceanspaces.com s3api get-bucket-policy --bucket acme-prod-uploads
aws --endpoint-url https://fra1.digitaloceanspaces.com s3api get-bucket-cors --bucket acme-prod-uploads
aws --endpoint-url https://fra1.digitaloceanspaces.com s3api get-bucket-lifecycle-configuration --bucket acme-prod-uploads
doctl spaces list-keys
<account>-<env>-<purpose> (lowercase, hyphen).Principal: * sadece CDN backed read için.AllowedOrigins: ["*"] prod YASAK.Content-Length-Range, Content-Type zorunlu mu?aws --endpoint-url https://fra1.digitaloceanspaces.com s3api put-bucket-lifecycle-configuration \
--bucket acme-prod-uploads \
--lifecycle-configuration file://lifecycle.json
Days: 7-30)?https:// mi? plain HTTP YASAK.public, max-age=31536000, immutable static asset?# Storage inventory
aws --endpoint-url https://fra1.digitaloceanspaces.com s3 ls s3://acme-prod-uploads --recursive --summarize --human-readable | tail -5
# Incomplete MPU
aws --endpoint-url https://fra1.digitaloceanspaces.com s3api list-multipart-uploads --bucket acme-prod-uploads
rclone sync s3:source s3:target cron (24h).--provider aws --bucket acme-prod-backups --s3-url https://fra1.digitaloceanspaces.com.Critical / High / Medium / Low + kanıt + sahip + tarih + projected impact.
* prod user upload.latest mutable key (immutable + content-hash).http:// endpoint).security-reviewer — pre-signed URL, CORS, bucket policy.cdn-engineering skill — CDN edge cache, Cache-Control, purge.iac-engineer — Terraform digitalocean_spaces_bucket + lifecycle.finops-review skill — storage + bandwidth + ghost MPU audit.backend-reviewer — pre-signed URL SDK pattern, multipart.infrastructure-implementer — Velero target binding.# DOS Review: acme-prod-uploads
## Current state
- Region: fra1, 487GB storage, 1.2TB egress / ay
- Bucket: 4 (uploads, backups-velero, static, logs)
- CDN: uploads + static aktif; CDN bandwidth 80%
## Findings
- **Critical**: uploads bucket public-read (user avatar PII expose riski)
- **Critical**: CORS `AllowedOrigins: ["*"]` prod
- **High**: Lifecycle yok 3 bucket → 47GB incomplete MPU ghost cost (~$1/ay)
- **High**: Pre-signed URL expire 24h (15dk olmalı)
- **Medium**: static asset Cache-Control yok → origin egress N×
- **Medium**: Cross-region DR yok (RPO ∞)
- **Low**: Access key shared 3 app
## Action items
| P0 | uploads bucket private + CDN behind | @security | 2026-05-18 |
| P0 | CORS allowed origin acme.com | @security | 2026-05-18 |
| P1 | Lifecycle MPU abort 7g 4 bucket | @platform | 2026-05-23 |
| P1 | Pre-signed URL expire 15dk + Content-Length condition | @backend | 2026-05-23 |
| P2 | Cache-Control immutable static asset | @frontend | 2026-06-06 |
| P2 | rclone cross-region cron (nyc3 secondary) | @platform | 2026-06-13 |
| P3 | Access key app başına ayır | @security | 2026-06-20 |