How to write a module that provides its own content-type using CCK?
If you goal it to create your own content type, but don't want to deal with the hassle of CRUD, you could use features. It's designed for doing stuff like this.

CCK doesn't actually handle creating new content types, that is part of the node module (Drupal core). If you want to add a node, as if it was done through the interface and don't want to use features you should use hook_node_info:

/**
 * Implementation of hook_node_info().
 */
function module_node_info() {
  $items = array(
    'activity' =&gt; array(
      'name' =&gt; t('Name'),
      'module' =&gt; 'node',
      'description' =&gt; t('Description.'),
      'has_title' =&gt; '1',
      'title_label' =&gt; t('Title'),
      'has_body' =&gt; '1',
      'body_label' =&gt; t('Body'),
      'min_word_count' =&gt; '0',
      'help' =&gt; '',
    ),
  );
  return $items;
}


Setting node to be the owner of the node type lets it handle CRUD etc.