
Best Practices
- 12 installs
- 22 repo stars
- Updated May 28, 2026
- acedergren/agentic-tools
best-practices is a Claude Code skill that acts as an OCI architecture-review router, triaging Oracle Cloud requests and routing each domain to the owning specialist skill.
About
best-practices is a Claude Code skill that acts as the entry-point router for Oracle Cloud (OCI) architecture reviews, migration triage, and deciding which OCI skill applies. It identifies the workload boundary, routes each domain such as networking, IAM, compute, or FinOps to the owning specialist skill, then checks cross-cutting risks like IAM blast radius, data residency, and cost controls. Developers use it when an OCI request spans more than one domain or the right specialist skill is unclear.
- Entry-point router for broad Oracle Cloud (OCI) architecture reviews and migration triage
- Routes each domain (networking, IAM, compute, database, FinOps) to the owning specialist skill
- Checks cross-cutting OCI Well-Architected risks like blast radius, residency, and cost controls
Best Practices by the numbers
- 12 all-time installs (skills.sh)
- Ranked #836 of 1,039 Cloud & Infrastructure skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
best-practices capabilities & compatibility
- Capabilities
- oci architecture review · cloud migration triage · well architected audit · skill routing
- Works with
- oracle · terraform
- Use cases
- devops · security audit
- Pricing
- Free
npx skills add https://github.com/acedergren/agentic-tools --skill best-practicesAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 12 |
|---|---|
| repo stars | ★ 22 |
| Last updated | May 28, 2026 |
| Repository | acedergren/agentic-tools ↗ |
What it does
Route a broad OCI architecture review or migration to the right specialist skill and check cross-cutting Well-Architected risks.
Who is it for?
Broad Oracle Cloud architecture reviews or migrations that span multiple OCI domains or where the right specialist skill is unclear.
Skip if: Narrow already-identified OCI tasks like a single VCN, IAM policy, or ADB tuning issue, which have dedicated specialist skills.
When should I use this skill?
You need to review OCI architecture, avoid OCI anti-patterns, plan an Oracle Cloud migration, or choose which OCI skill applies.
What you get
A routed architecture review with each OCI domain handed to its owner skill and cross-cutting Well-Architected risks flagged.
- Routed architecture-review plan
- Cross-cutting OCI risk checklist
By the numbers
- routing table covers 11+ OCI specialist domains
- version 2.0.0 per frontmatter
Files
OCI Best Practices
NEVER Do This
❌ NEVER create a VCN with /24 or smaller CIDR — it cannot be expanded
# WRONG - only 256 IPs, exhausted quickly, cannot expand
oci network vcn create --cidr-block "10.0.0.0/24"
# RIGHT - start with /16 (65,536 IPs, room for 256 /24 subnets)
oci network vcn create --cidr-block "10.0.0.0/16"
# OCI supports /16 to /30Migration cost: Must create new VCN and migrate everything — hours of downtime, IP changes, security rule updates.
❌ NEVER use AD-specific subnets (deprecated, breaks multi-AD HA)
# WRONG - subnet tied to a single AD
oci network subnet create --availability-domain "fMgC:US-ASHBURN-AD-1" ...
# Cannot launch instances in other ADs; no HA possible
# RIGHT - omit --availability-domain for regional subnet
oci network subnet create --vcn-id <vcn-ocid> --cidr-block "10.0.1.0/24"
# Instances can be in any AD in regionSome old OCI guides still show AD-specific subnets — this is a deprecated pattern.
❌ NEVER hardcode AD names — they are tenancy-specific, not portable
# WRONG - only works in YOUR tenancy
availability_domain = "fMgC:US-ASHBURN-AD-1"
# Another tenant's prefix for the SAME physical AD: "xYzA:US-ASHBURN-AD-1"
# RIGHT - query dynamically
data "oci_identity_availability_domains" "ads" {
compartment_id = var.tenancy_ocid
}
# OCI generates unique prefixes per tenant for security isolation❌ NEVER enable Cloud Guard auto-remediation without testing first
Detector: "Public bucket detected"
Auto-remediation: Make bucket private → breaks public website immediately!
Detector: "Security list allows 0.0.0.0/0"
Auto-remediation: Removes rule → breaks internet access!
Safe approach:
1. Enable detectors in read-only mode
2. Review findings for 1-2 weeks
3. Tune responders to eliminate false positives
4. Enable auto-remediation only for trusted patternsCloud Guard is enabled by default in some tenancies — check before assuming it's inactive.
❌ NEVER deploy all resources in a single AD (no SLA)
Single-AD: Oracle refuses SLA claims in 3-AD regions
Multi-AD: 99.95% SLA
Correct pattern:
AD-1, AD-2, AD-3: web instances (distribute evenly)
Load Balancer: automatically multi-AD
Database: ADB (auto 3-AD) or RAC (2+ nodes in separate ADs)OCI vs AWS/Azure Terminology
| OCI Term | AWS | Azure |
|---|---|---|
| VCN | VPC | Virtual Network |
| Security List (subnet-level, stateful) | VPC Security Group | NSG (network-level) |
| NSG (resource-level, stateful) | Security Group | Application Security Group |
| DRG | Virtual Private Gateway | VPN Gateway |
| Compartment | Resource Group / OU | Resource Group |
| Tenancy | Account | Subscription |
| Availability Domain | Availability Zone | Availability Zone |
| Fault Domain | (within AZ) | Availability Set |
| Dynamic Group | IAM Role (for EC2) | Managed Identity |
| Instance Principal | EC2 Instance Profile | Managed Identity |
| OCIR | ECR | Container Registry |
| OKE | EKS | AKS |
Critical difference: OCI has BOTH Security Lists (subnet-scope) AND NSGs (resource-scope). AWS has only resource-scope Security Groups. This causes confusion when migrating.
Always-Free Tier (Exact Limits)
Compute
- 2 AMD VMs: VM.Standard.E2.1.Micro (1/8 OCPU, 1 GB RAM)
- Arm: 4 OCPUs total, 24 GB RAM — VM.Standard.A1.Flex only (A2 is paid)
- Example: 4× 1OCPU/6GB instances, free forever
Database
- 2 Autonomous Databases: 1 OCPU, 20 GB each — ATP or ADW
- Limit is tenancy-wide (not per region): 1 ATP Phoenix + 1 ADW Ashburn = limit reached
- Stopped ADB still counts toward the 2-ADB limit — must DELETE to free slot
Storage / Networking
- 200 GB block volumes, 10 GB Object Storage, 10 GB Archive
- 1 flexible Load Balancer (10 Mbps), 1 reserved public IP per region
Free tier vs trial: Free tier is permanent; trial is $300 credit for 30 days. These are separate.
Compartment Hierarchy
Root (tenancy)
├─ SharedServices
│ ├─ Network (VCNs, DRGs)
│ └─ Security (Vault, KMS, Cloud Guard)
├─ Production
│ ├─ App1 (Compute / Database / Storage)
│ └─ App2
├─ NonProduction
│ ├─ Development
│ ├─ Testing
│ └─ Staging
└─ Sandbox (auto-cleanup policies)Key OCI-specific property: deleting a compartment deletes all resources inside — use this for Sandbox lifecycle management. IAM policies scoped to compartments enforce least privilege without account/subscription proliferation.
Multi-AD and Fault Domain Patterns
OCI regions with 3 ADs: US-Phoenix, US-Ashburn, UK-London, DE-Frankfurt, AU-Sydney, AU-Melbourne.
Gotcha: Some shapes are only available in specific ADs — check before distributing:
oci compute shape list --compartment-id <ocid> --availability-domain "fMgC:US-ASHBURN-AD-1"Fault Domains (3 per AD, separate power/cooling/network): Use for extra-critical apps only — adds operational complexity. Spread across ADs first; add FD distribution only if single-instance impact matters.
Cost: Flex Shapes and Storage Tiering
Flex shapes (OCI-unique): Decouple OCPU and RAM billing.
- Fixed shape VM.Standard2.4: 4 OCPUs, 60 GB RAM, $218/month
- Flex VM.Standard.E4.Flex: 4 OCPUs, 16 GB RAM, $109/month (50% savings)
- Arm VM.Standard.A1.Flex: $0.01/OCPU-hr vs AMD $0.03/OCPU-hr (67% cheaper)
Object Storage tiering (exact prices):
| Tier | Cost/GB/Month | Retrieval |
|---|---|---|
| Standard | $0.0255 | Free, instant |
| Infrequent Access | $0.0125 | $0.01/GB, instant |
| Archive | $0.0024 | $0.01/GB, 1-hour delay |
1 TB data for 1 year — lifecycle policy (30d Standard → 60d Infrequent → Archive): $72/year vs $306/year flat Standard (76% savings).
Security Zones (OCI-Unique Enforcement)
Security Zones enforce policies at the API level — requests that violate are rejected, not just flagged:
- All storage encrypted
- No public buckets
- No internet gateways
- Databases private-endpoint only
# This fails if compartment is in a Security Zone
oci os bucket create --public-access-type ObjectRead
# → HTTP 400: Security Zone violationTest Security Zone policies in dev before applying to production — they can break existing automation.
Reference Files
Load `references/oci-well-architected-checklist.md` when you need:
- CIS OCI Foundations Benchmark audit checklist
- Automated security scanning scripts
- Remediation scripts for common findings
- Drift detection monitoring setup
OCI Well-Architected Framework Checklist
Five Pillars Overview
Pillar 1: Security and Compliance
| Focus Area | Best Practice | CLI Verification |
|---|---|---|
| User Authentication | Enable MFA for all IAM users | oci iam user list --query "data[?\"is-mfa-activated\"==\false\]" |
| Authorization | Use least privilege policies | Review policies for all-resources or any-user |
| Data Encryption | Enable encryption at rest | oci vault secret list --compartment-id <id> |
| Network Security | Use NSGs over Security Lists | oci network nsg list --compartment-id <id> |
| Audit Logging | Enable audit logs for all compartments | oci audit event list --compartment-id <id> |
Pillar 2: Reliability and Resilience
| Focus Area | Best Practice | CLI Verification |
|---|---|---|
| High Availability | Deploy across multiple ADs | Check instance distribution |
| Backup Strategy | Configure automatic backups | oci bv backup list --compartment-id <id> |
| Disaster Recovery | Set up cross-region replication | oci os replication-policy list |
| Load Balancing | Use regional load balancers | oci lb load-balancer list --compartment-id <id> |
Pillar 3: Performance and Cost Optimization
| Focus Area | Best Practice | CLI Verification |
|---|---|---|
| Right-Sizing | Match instance shapes to workload | Review CPU/Memory utilization metrics |
| Reserved Capacity | Use committed pricing for predictable workloads | oci limits value list |
| Storage Tiers | Use appropriate storage classes | Check for overprovisioned volumes |
| Networking | Use Service Gateway for OCI services | oci network service-gateway list |
Pillar 4: Operational Efficiency
| Focus Area | Best Practice | CLI Verification |
|---|---|---|
| Infrastructure as Code | Use Terraform for all resources | Check for Resource Manager stacks |
| Monitoring | Set up alarms for critical metrics | oci monitoring alarm list --compartment-id <id> |
| Automation | Use OCI Events for automation | oci events rule list --compartment-id <id> |
| Tagging | Implement mandatory tagging | oci iam tag-namespace list --compartment-id <id> |
Pillar 5: Distributed Cloud
| Focus Area | Best Practice | CLI Verification |
|---|---|---|
| Multi-Region | Deploy critical workloads in multiple regions | Review region distribution |
| Hybrid Cloud | Use FastConnect for on-premises connectivity | oci network fast-connect-provider-service list |
| Edge | Use Content Delivery for global distribution | Check CDN configurations |
CIS OCI Foundations Benchmark Controls
Identity and Access Management
# 1.1 Ensure MFA is enabled for all users
oci iam user list --all --query "data[?\"is-mfa-activated\"==\`false\`].{Name:name,OCID:id}"
# 1.2 Ensure API keys rotate every 90 days
oci iam user api-key list --user-id <user-ocid> --query "data[?\"time-created\" < '\`date -v-90d +%Y-%m-%dT%H:%M:%S\`']"
# 1.3 Ensure no policies use "any-user"
oci iam policy list --compartment-id <tenancy-ocid> --all --query "data[?contains(statements[],'any-user')]"Networking
# 2.1 Ensure no security lists allow 0.0.0.0/0 ingress
oci network security-list list --compartment-id <id> --all --query "data[].{Name:\"display-name\",Rules:\"ingress-security-rules\"[?source=='0.0.0.0/0']}"
# 2.2 Ensure VCN Flow Logs are enabled
oci network flow-log list --compartment-id <id>
# 2.3 Ensure Service Gateway is used for OCI services
oci network service-gateway list --compartment-id <id>Logging and Monitoring
# 3.1 Ensure Audit Log retention is at least 365 days
# Audit logs are retained for 365 days by default and cannot be changed
# 3.2 Ensure Cloud Guard is enabled
oci cloud-guard target list --compartment-id <tenancy-ocid>
# 3.3 Ensure VCN Flow Logs are enabled for all subnets
oci network subnet list --compartment-id <id> --query "data[?!\"vcn-id\"]"Storage
# 4.1 Ensure Object Storage buckets are not public
oci os bucket list --compartment-id <id> --query "data[?\"public-access-type\"!='NoPublicAccess']"
# 4.2 Ensure boot volumes are encrypted with Customer-Managed Keys
oci bv boot-volume list --compartment-id <id> --query "data[?!\"kms-key-id\"]"
# 4.3 Ensure block volumes are encrypted with Customer-Managed Keys
oci bv volume list --compartment-id <id> --query "data[?!\"kms-key-id\"]"Quick Compliance Check Script
#!/bin/bash
# OCI Quick Compliance Check
COMPARTMENT_ID="$1"
echo "=== Security Checks ==="
echo "Public buckets:"
oci os bucket list --compartment-id $COMPARTMENT_ID --query "data[?\"public-access-type\"!='NoPublicAccess'].name" --output table
echo "Security lists with 0.0.0.0/0:"
oci network security-list list --compartment-id $COMPARTMENT_ID --all --query "data[].{Name:\"display-name\"}" --output table
echo "=== Reliability Checks ==="
echo "Instances without backups:"
# Compare instance list with backup list
echo "=== Cost Checks ==="
echo "Stopped instances (still incurring boot volume cost):"
oci compute instance list --compartment-id $COMPARTMENT_ID --lifecycle-state STOPPED --query "data[].{Name:\"display-name\",Shape:shape}" --output tableRemediation Priority Matrix
| Finding | Impact | Effort | Priority |
|---|---|---|---|
| Public S3 bucket | Critical | Low | P0 - Fix immediately |
| No MFA enabled | High | Low | P1 - Fix within 24h |
| Open 22/3389 to 0.0.0.0/0 | High | Low | P1 - Fix within 24h |
| No encryption at rest | High | Medium | P2 - Fix within 1 week |
| No backups configured | Medium | Low | P2 - Fix within 1 week |
| Missing tags | Low | Low | P3 - Fix within 1 month |
| Over-provisioned instances | Low | Medium | P3 - Fix within 1 month |
Related skills
FAQ
Is this the source of truth for OCI pricing and limits?
No. It explicitly routes to the owner skill and says to verify current Oracle docs before quoting prices, quotas, or service limits.
When should I use a narrower OCI skill instead?
For an already-identified task such as VCN networking, IAM policy, Terraform, compute shapes, or ADB operations, load that domain's dedicated skill directly.