agentleFS
Happy-Technologies-LLCHappy-Technologies-LLC/happy-platform-skills/skills/cmdb/ci-discovery/SKILL.md

ci-discovery

Skill41 starsChanged 6 days agoApache-2.0View on GitHub

Configuration Item discovery, classification, and CMDB population strategies

We split this skill into the rules it gives an agent

8 rules. About 0 are common, 8 are distinctive, and 0 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈8

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When to use: When populating or maintaining the CMDB, onboarding new infrastructure, or validating CI data.

    line 39
  2. Distinctive:

    Before adding new CIs, check what exists:

    line 87
  3. Distinctive:

    Ensure data quality with validation queries:

    line 209
  4. Distinctive:

    Update CI status as things change:

    line 237
  5. Distinctive:

    Standardize Naming: Follow consistent naming conventions

    line 286
  6. Distinctive:

    Solution: Check sys_class_name and ensure required fields are populated

    line 297
  7. Distinctive:

    Solution: Use identification rules; merge or retire duplicates

    line 302
  8. Distinctive:

    Solution: Verify relationship type supports the parent/child classes

    line 307

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Configuration Item Discovery

Overview

Configuration Items (CIs) are the foundation of the CMDB. This skill covers:

  • Understanding the CI class hierarchy
  • Discovering and classifying CIs
  • Creating CIs manually when automated discovery isn't available
  • Maintaining CI data quality
  • Establishing CI relationships

When to use: When populating or maintaining the CMDB, onboarding new infrastructure, or validating CI data.

Prerequisites

  • Roles: cmdb_admin or itil with CMDB write access
  • Access: CMDB tables (cmdb_ci and subclasses)
  • Knowledge: CMDB class structure, CI attributes

Procedure

Step 1: Understand the CI Class Hierarchy

The CMDB uses inheritance. All CIs extend from cmdb_ci:

cmdb_ci (Base CI)
├── cmdb_ci_computer
│   ├── cmdb_ci_server
│   │   ├── cmdb_ci_win_server
│   │   ├── cmdb_ci_linux_server
│   │   └── cmdb_ci_unix_server
│   └── cmdb_ci_pc_hardware
│       ├── cmdb_ci_computer_win
│       └── cmdb_ci_computer_mac
├── cmdb_ci_service
│   ├── cmdb_ci_service_auto
│   └── cmdb_ci_service_manual
├── cmdb_ci_appl
│   ├── cmdb_ci_app_server
│   └── cmdb_ci_database_instance
├── cmdb_ci_network_gear
│   ├── cmdb_ci_netgear
│   └── cmdb_ci_ip_router
└── cmdb_ci_storage_device

Discover available CI classes:

Tool: SN-Query-Table
Parameters:
  table_name: sys_db_object
  query: nameLIKEcmdb_ci^super_class.name=cmdb_ci
  fields: name,label,super_class
  limit: 50

Step 2: Query Existing CIs

Before adding new CIs, check what exists:

Using MCP:

Tool: SN-List-CmdbCis
Parameters:
  ci_class: cmdb_ci_server
  query: operational_status=1
  fields: name,ip_address,os,sys_class_name
  limit: 100

Search by name:

Tool: SN-Query-Table
Parameters:
  table_name: cmdb_ci
  query: nameLIKEweb-server
  fields: sys_id,name,sys_class_name,operational_status

Step 3: Create New CIs

Manual CI Creation (when discovery isn't available):

Tool: SN-Create-Record
Parameters:
  table_name: cmdb_ci_linux_server
  data:
    name: "prod-web-01"
    ip_address: "10.0.1.100"
    dns_domain: "corp.company.com"
    fqdn: "prod-web-01.corp.company.com"
    os: "Red Hat Enterprise Linux"
    os_version: "8.5"
    cpu_count: 8
    ram: 32768
    disk_space: 500
    serial_number: "SN12345678"
    asset_tag: "ASSET-001"
    operational_status: 1
    install_status: 1
    environment: Production
    location: [location_sys_id]
    department: [department_sys_id]
    support_group: [group_sys_id]
    managed_by: [user_sys_id]
    comments: "Production web server - Node 1"

CI Attribute Reference:

AttributeDescriptionExample
nameCI display nameprod-web-01
ip_addressPrimary IP10.0.1.100
fqdnFully qualified domain nameprod-web-01.corp.com
operational_status1=Operational, 2=Non-Op1
install_status1=Installed, 7=Retired1
environmentProduction/Test/DevProduction
support_groupSupporting teamLinux Admins

Step 4: Classify CIs Properly

Choose the most specific class that fits:

Decision Tree:

Is it hardware?
├── Yes → Is it a computer?
│   ├── Yes → Server or Workstation?
│   │   ├── Server → What OS? → cmdb_ci_win_server / cmdb_ci_linux_server
│   │   └── Workstation → cmdb_ci_pc_hardware
│   └── No → Network gear? Storage? → cmdb_ci_netgear / cmdb_ci_storage
└── No → Is it software?
    ├── Application → cmdb_ci_appl
    ├── Database → cmdb_ci_database_instance
    └── Service → cmdb_ci_service

Get class schema to understand attributes:

Tool: SN-Discover-Table-Schema
Parameters:
  table_name: cmdb_ci_linux_server

Step 5: Establish CI Relationships

CIs don't exist in isolation. Define relationships:

Relationship Types:

TypeDescriptionExample
Runs onSoftware on hardwareApp runs on Server
Depends onService dependencyWeb depends on DB
ContainsPhysical containmentRack contains Server
Owned byOwnershipServer owned by Team

Create Relationship:

Tool: SN-Create-Record
Parameters:
  table_name: cmdb_rel_ci
  data:
    parent: [parent_ci_sys_id]
    child: [child_ci_sys_id]
    type: [relationship_type_sys_id]

Find relationship types:

Tool: SN-Query-Table
Parameters:
  table_name: cmdb_rel_type
  fields: sys_id,name,parent_descriptor,child_descriptor
  limit: 50

Step 6: Validate CI Data

Ensure data quality with validation queries:

Find CIs missing required data:

Tool: SN-Query-Table
Parameters:
  table_name: cmdb_ci_server
  query: ip_addressISEMPTY^operational_status=1
  fields: name,sys_class_name,support_group

Find duplicate CIs:

Tool: SN-Query-Table
Parameters:
  table_name: cmdb_ci
  query: nameLIKEserver-name
  fields: sys_id,name,ip_address,sys_created_on

Check orphan CIs (no relationships):

# Query CIs not in any relationship
# This requires a more complex query or script

Step 7: Maintain CI Lifecycle

Update CI status as things change:

Operational Status Values:

ValueStatusWhen to Use
1OperationalCI is functioning normally
2Non-OperationalCI is down/broken
3Repair in ProgressBeing fixed
4DR StandbyDisaster recovery standby
6RetiredNo longer in use

Update CI Status:

Tool: SN-Update-Record
Parameters:
  table_name: cmdb_ci_server
  sys_id: [ci_sys_id]
  data:
    operational_status: 6
    install_status: 7
    decommissioned: true
    comments: "Decommissioned per CHG0012345 on 2026-02-06"

CI Data Quality Checklist

  • Name follows naming convention
  • IP address is accurate and unique
  • Serial number recorded (for hardware)
  • Support group assigned
  • Location specified
  • Environment set (Prod/Test/Dev)
  • Relationships defined
  • Operational status current
  • Discovery source documented

Tool Usage Summary

OperationMCP ToolREST Endpoint
Query CIsSN-Query-Table, SN-List-CmdbCisGET /cmdb_ci
Create CISN-Create-RecordPOST /cmdb_ci_*
Update CISN-Update-RecordPATCH /cmdb_ci/{id}
Get SchemaSN-Discover-Table-SchemaGET /sys_dictionary
RelationshipsSN-Create-RecordPOST /cmdb_rel_ci

Best Practices

  • Use Most Specific Class: cmdb_ci_linux_server, not cmdb_ci_server
  • Standardize Naming: Follow consistent naming conventions
  • Link to Assets: Connect CIs to asset records when applicable
  • Document Sources: Note whether CI was discovered or manually created
  • Regular Audits: Periodically validate CI data accuracy
  • Relationship Completeness: CIs should have at least one relationship

Troubleshooting

CI Not Appearing in Reports

Cause: Wrong class or missing attributes Solution: Check sys_class_name and ensure required fields are populated

Duplicate CIs

Cause: Multiple discovery sources or manual duplicates Solution: Use identification rules; merge or retire duplicates

Relationships Not Showing

Cause: Relationship type not valid for CI classes Solution: Verify relationship type supports the parent/child classes

Related Skills

  • cmdb/relationship-mapping - Deep dive into relationships
  • cmdb/impact-analysis - Using CMDB for impact analysis
  • cmdb/service-graph-diagnosis - Diagnose discovery and service graph gaps
  • itsm/change-management - CI changes during changes

References

Download now (ZIP)

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.