Source profileQuality 97/100

wyre-technology/msp-claude-plugins/msp-claude-plugins/hudu/hudu/skills/companies/SKILL.md

Hudu Companies

Hudu companies (clients/organizations): company field reference, parent/child hierarchy, PSA integration matching via id_in_integration, the /api/v1/companies CRUD plus archive/unarchive endpoints, onboarding and offboarding workflows, and how companies scope assets, passwords, articles, and websites.

Source repository stars
39
Declared platforms
0
Static risk flags
1
Last source update
2026-08-06
Source checked
2026-08-06

Decision brief

What it does—and where it fits

Hudu companies (clients/organizations): company field reference, parent/child hierarchy, PSA integration matching via id_in_integration, the /api/v1/companies CRUD plus archive/unarchive endpoints, onboarding and offboarding workflows, and how companies scope assets, passwords, articles, and websites.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/wyre-technology/msp-claude-plugins --skill "msp-claude-plugins/hudu/hudu/skills/companies"
    Safe inspection promptEditorial

    Inspect the Agent Skill "Hudu Companies" from https://github.com/wyre-technology/msp-claude-plugins/blob/c1011303bfd2a65abc9b260884d9858d1a482a6f/msp-claude-plugins/hudu/hudu/skills/companies/SKILL.md at commit c1011303bfd2a65abc9b260884d9858d1a482a6f. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      PSA Sync Verification

      Review the “PSA Sync Verification” section in the pinned source before continuing.

      Review and apply the “PSA Sync Verification” source section.
    2. 02

      Anti-triggers

      The client record of record — a Hudu company scopes documentation.

      The client record of record — a Hudu company scopes documentation.The same client in IT Glue — IT Glue calls these Organizations; useThe monitored client container — an RMM organization or site is a
    3. 03

      Key Concepts

      Unlike IT Glue, Hudu does not enforce built-in company types. Companies are typically organized using custom fields or naming conventions. Common patterns MSPs use:

      Unlike IT Glue, Hudu does not enforce built-in company types. Companies are typically organized using custom fields or naming conventions. Common patterns MSPs use:Companies can have parent/child relationships for multi-location or multi-division clients:Companies can be matched to PSA records using the idinintegration and integrationslug fields, enabling cross-platform lookups between Hudu and tools like ConnectWise Manage, Autotask, or HaloPSA.
    4. 04

      Company Types

      Unlike IT Glue, Hudu does not enforce built-in company types. Companies are typically organized using custom fields or naming conventions. Common patterns MSPs use:

      Unlike IT Glue, Hudu does not enforce built-in company types. Companies are typically organized using custom fields or naming conventions. Common patterns MSPs use:
    5. 05

      Company Hierarchy

      Companies can have parent/child relationships for multi-location or multi-division clients:

      Companies can have parent/child relationships for multi-location or multi-division clients:

    Permission review

    Static risk signals and limitations

    Network access

    medium · line 147

    The documentation includes network, browsing, or remote request actions.

    "website": "https://newclient.com",

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score97/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars39SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    wyre-technology/msp-claude-plugins
    Skill path
    msp-claude-plugins/hudu/hudu/skills/companies/SKILL.md
    Commit
    c1011303bfd2a65abc9b260884d9858d1a482a6f
    License
    Apache-2.0
    Collected
    2026-08-06
    Default branch
    main
    View the original SKILL.md

    Hudu Companies Management

    Overview

    Companies are the foundational entity in Hudu, representing clients, vendors, or internal entities. All documentation, assets, passwords, articles, and websites are associated with a company. In Hudu, the "Company" label is customizable per instance -- some MSPs rename it to "Organization" or "Client" -- but the API endpoint is always /api/v1/companies.

    Anti-triggers

    • The client record of record — a Hudu company scopes documentation. Contracts, contacts, and service history live in the PSA; use autotask-crm, connectwise-psa-companies, or halopsa-clients. Hudu's id_in_integration field holds the PSA's ID precisely because the two are different records.
    • The same client in IT Glue — IT Glue calls these Organizations; use it-glue-api-patterns for its equivalent surface.
    • The monitored client container — an RMM organization or site is a monitoring scope, not documentation; use ninjaone-rmm-organizations, atera-customers, or datto-rmm-sites.
    • The client's licence or billing entity — use pax8-companies, sherweb-customers, or quickbooks-online-customers.

    Key Concepts

    Company Types

    Unlike IT Glue, Hudu does not enforce built-in company types. Companies are typically organized using custom fields or naming conventions. Common patterns MSPs use:

    PatternDescriptionExample
    Active ClientCurrently serviced customerStandard operational state
    ProspectPotential clientPre-sales documentation
    VendorProduct/service supplierSoftware vendors
    InternalYour own MSPInternal documentation
    Former ClientPreviously servicedHistorical records

    Company Hierarchy

    Companies can have parent/child relationships for multi-location or multi-division clients:

    Parent Company (Acme Holdings)
    +-- Child: Acme East Division
    +-- Child: Acme West Division
    +-- Child: Acme International
    

    PSA Integration

    Companies can be matched to PSA records using the id_in_integration and integration_slug fields, enabling cross-platform lookups between Hudu and tools like ConnectWise Manage, Autotask, or HaloPSA.

    Field Reference

    Core Fields

    FieldTypeRequiredDescription
    idintegerSystemAuto-generated unique identifier
    namestringYesCompany name
    nicknamestringNoShort name or abbreviation
    company_typestringNoType classification
    address_line_1stringNoStreet address line 1
    address_line_2stringNoStreet address line 2
    citystringNoCity
    statestringNoState/province
    zipstringNoPostal code
    country_namestringNoCountry
    phone_numberstringNoPhone number
    fax_numberstringNoFax number
    websitestringNoCompany website URL
    notesstringNoRich text notes

    Integration Fields

    FieldTypeDescription
    id_in_integrationintegerPSA system company ID
    integration_slugstringPSA integration identifier

    Relationship Fields

    FieldTypeDescription
    parent_company_idintegerParent company ID
    parent_company_namestringParent company name (read-only)

    Metadata Fields

    FieldTypeDescription
    created_atdatetimeCreation timestamp
    updated_atdatetimeLast update timestamp
    slugstringURL-friendly identifier
    object_typestringAlways "Company"

    API Patterns

    List Companies

    GET /api/v1/companies
    x-api-key: YOUR_API_KEY
    Content-Type: application/json
    

    With Filters:

    GET /api/v1/companies?name=Acme
    GET /api/v1/companies?city=Springfield
    GET /api/v1/companies?state=IL
    GET /api/v1/companies?id_in_integration=12345
    GET /api/v1/companies?search=acme
    

    With Pagination:

    GET /api/v1/companies?page=1
    GET /api/v1/companies?page=2
    

    Get Single Company

    GET /api/v1/companies/123
    x-api-key: YOUR_API_KEY
    

    Create Company

    POST /api/v1/companies
    Content-Type: application/json
    x-api-key: YOUR_API_KEY
    
    {
      "company": {
        "name": "New Client Corporation",
        "nickname": "NCC",
        "company_type": "Customer",
        "address_line_1": "123 Main Street",
        "city": "Portland",
        "state": "OR",
        "zip": "97201",
        "phone_number": "555-123-4567",
        "website": "https://newclient.com",
        "notes": "Onboarded February 2026. Primary contact: John Smith."
      }
    }
    

    Update Company

    PUT /api/v1/companies/123
    Content-Type: application/json
    x-api-key: YOUR_API_KEY
    
    {
      "company": {
        "nickname": "NCC-UPDATED",
        "notes": "Updated: New primary contact is Jane Doe (555-987-6543)."
      }
    }
    

    Delete Company

    DELETE /api/v1/companies/123
    x-api-key: YOUR_API_KEY
    

    Warning: Deleting a company removes all associated resources (assets, passwords, articles, etc.). Requires DELETE permission on the API key.

    Archive / Unarchive Company

    PUT /api/v1/companies/123/archive
    x-api-key: YOUR_API_KEY
    
    PUT /api/v1/companies/123/unarchive
    x-api-key: YOUR_API_KEY
    

    Search by PSA Integration ID

    GET /api/v1/companies?id_in_integration=12345
    

    Common Workflows

    New Client Onboarding

    1. Create company with basic info (name, address, phone, website)
    2. Set integration ID to link with PSA
    3. Add notes for quick reference (primary contact, contract info)
    4. Create initial assets (servers, workstations, network devices)
    5. Document passwords for the company
    6. Create articles (network overview, procedures)
    7. Add website records for monitoring
    async function onboardClient(clientData) {
      // Step 1: Create company
      const company = await createCompany({
        name: clientData.companyName,
        nickname: clientData.nickname,
        company_type: 'Customer',
        address_line_1: clientData.address,
        city: clientData.city,
        state: clientData.state,
        zip: clientData.zip,
        phone_number: clientData.phone,
        website: clientData.website,
        notes: `Onboarded: ${new Date().toLocaleDateString()}\nPrimary contact: ${clientData.primaryContact}`
      });
    
      // Step 2: Link to PSA
      if (clientData.psaId) {
        await updateCompany(company.id, {
          id_in_integration: clientData.psaId
        });
      }
    
      return company;
    }
    

    Client Offboarding

    1. Review and export critical documentation if needed
    2. Archive passwords (do not delete for audit purposes)
    3. Archive the company instead of deleting
    4. Add offboarding notes with date and reason
    async function offboardClient(companyId, reason) {
      // Add offboarding notes
      await updateCompany(companyId, {
        notes: `ARCHIVED: ${new Date().toLocaleDateString()} - ${reason}`
      });
    
      // Archive the company
      await archiveCompany(companyId);
    }
    

    PSA Sync Verification

    async function verifyPsaSync() {
      const companies = await fetchAllCompanies();
    
      const syncStatus = {
        synced: [],
        unsynced: [],
        mismatched: []
      };
    
      for (const company of companies) {
        if (!company.id_in_integration) {
          syncStatus.unsynced.push(company);
        } else {
          const psaCompany = await lookupPsaCompany(company.id_in_integration);
          if (psaCompany) {
            syncStatus.synced.push(company);
          } else {
            syncStatus.mismatched.push(company);
          }
        }
      }
    
      return syncStatus;
    }
    

    Bulk Company Report

    async function generateCompanyReport() {
      const companies = await fetchAllCompanies();
    
      return companies.map(company => ({
        name: company.name,
        nickname: company.nickname,
        city: company.city,
        state: company.state,
        psaSynced: !!company.id_in_integration,
        hasWebsite: !!company.website,
        createdAt: company.created_at,
        updatedAt: company.updated_at
      }));
    }
    

    Error Handling

    Common API Errors

    CodeMessageResolution
    400Name can't be blankProvide company name
    400Name has already been takenUse unique name
    401Invalid API keyCheck HUDU_API_KEY
    404Company not foundVerify company ID and HUDU_BASE_URL
    422Validation failedCheck required fields

    Validation Errors

    ErrorCauseFix
    Name requiredMissing name fieldAdd name to request body
    Name not uniqueDuplicate company nameUse a different name
    Invalid parent IDNon-existent parent companyVerify parent_company_id

    Error Recovery Pattern

    async function safeCreateCompany(data) {
      try {
        return await createCompany(data);
      } catch (error) {
        if (error.status === 422 && error.message?.includes('already been taken')) {
          // Company exists - find and return it
          const existing = await findCompanyByName(data.name);
          return existing;
        }
    
        if (error.status === 401) {
          throw new Error('API key invalid or expired. Check HUDU_API_KEY.');
        }
    
        throw error;
      }
    }
    

    Best Practices

    1. Use descriptive names - Include location or identifier if needed for uniqueness
    2. Set nicknames - Short abbreviations for quick reference
    3. Maintain notes - Keep emergency contact info and contract details readily available
    4. Link to PSA - Always set id_in_integration for cross-platform lookups
    5. Use parent/child - Organize multi-location or division clients
    6. Archive, don't delete - Preserve historical documentation
    7. Include address info - Useful for dispatch and site visit planning
    8. Document website - Track the company's primary website URL

    Related Skills

    Alternatives

    Compare before choosing

    Computed 9810,903

    huggingface/skills

    huggingface-zerogpu

    AI demos and GPU compute with Gradio Spaces and Hugging Face Spaces ZeroGPU. Use when writing or reviewing code that uses `@spaces.GPU`, configuring `python_version` or `requirements.txt` for a ZeroGPU Space, or handling ZeroGPU-specific code constraints — pickle-based process isolation, `gr.State` semantics across the worker boundary, no `torch.compile` (use AoTI instead), CUDA wheel-only builds (no `nvcc` at build or runtime), large vs xlarge sizing, and dynamic duration callables. Make sure t

    Computed 9732,785

    K-Dense-AI/scientific-agent-skills

    esm

    Use when working directly with the `esm` Python SDK, ESM3 or ESMC model IDs, Forge/Biohub inference clients, or ESMFold2 folding workflows.

    Computed 97181

    testdouble/han

    plan-a-feature

    Builds a feature specification from scratch through a relentless, evidence-based interview that walks the design tree decision-by-decision, resolving dependencies as it goes. Use when the user wants to plan, design, scope, specify, or flesh out a new feature, capability, or system behavior before implementation. Produces a feature specification focused on system behaviors, not implementation detail. Does not refine or stress-test an existing plan — use iterative-plan-review. Does not document al

    Computed 9711

    btspoony/mstar-harness

    mstar-audit

    Morning Star codebase audit — survey any repository as a senior advisor and produce prioritized, self-contained improvement plans for the normal Prepare → Execute flow to pick up. Strictly read-only on source code. Use when asked to audit or survey a codebase, find improvement opportunities (bugs, security, performance, test gaps, tech debt, dependency upgrades, DX), suggest what to build next (direction/roadmap), or when the user says 'what should I improve / fix / refactor / upgrade in this co