Creating new versions of built-in shaders in Unity5?

I need to make a duplicate of the skybox / cubemap shader in unity 5 to add more stuff to it. But I’m not quite sure how I should be duplicating / editing the existing shader.

The first thing I tried was “edit shader” in the gear to the upper right of the shader drop down menu in the material panel in the inspector, for a new material. This takes me to the inspector for the shader. But here is where it gets confusing. The only thing I can do in this inspector is select which platform / variant of the shader I want and then hit ‘Compile and show code.’ So I’m assuming I’d have to:

  1. Select ‘All Platforms’ from the drop down, so it shows the code for the whole shader. I’m assuming otherwise, if I selected only OpenGLES2 for instance, and added a new uniform, that uniform would only be available for GLES2 and not for other platforms?
  2. Hit ‘Compile and show code’ so that the shader code opens up in Mono.
  3. Edit the shader and save it with a new filename.

I tried the above and it seems to work. But I’m not clear still on why do I need to compile first in order to edit the shader code. I mean, the file to me looks like Unity’s meta shader language followed by uncompiled straight GLSL and HLSL code. Also, I’m not clear on why Unity has a separate download for the built-in shaders (builtin_shaders-5). And also, the skybox shader doesn’t even seem to be in this separate built-in shaders download, unless it has a different name.

The separate download exists because the shader source is not available from within Unity.